如何以与逐行相同的形式返回范围电子表格

时间:2017-04-03 07:30:58

标签: google-apps-script google-sheets

我是编程的初学者。 我在单元格A2中对电子表格进行查询,然后根据请求过滤数据并接收所需范围“I1:L16”。然后我将数据返回到平板电脑。平板电脑上的一切都很好,但阅读不舒服,没有换行! 请告诉我如何以与电子表格相同的形式返回“I1:L16”范围。它是逐行的。

我的剧本

function doGet(e)
{
  var sheet = SpreadsheetApp.openById("1UBKi7VDo1aJjn6IwGMKvlxy4Jz9d9jVdY79zpOrkQP8");
  sheet.getRange("A2").setValue(e.parameter.p1) ;
  var n= sheet.getRange("I1:L16").getValues();
  return ContentService.createTextOutput(n);
}

电子表格 https://docs.google.com/spreadsheets/d/1UBKi7VDo1aJjn6IwGMKvlxy4Jz9d9jVdY79zpOrkQP8/edit?usp=sharing

URL Web应用程序:示例查询 https://script.google.com/macros/s/AKfycbyHu7d5djciltlG-micI6O-cQheC6kN7yWKkevm5KwGCJiKROZB/exec?p1=1234567891118

最好的问候,亚历山大。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

function doGet(e)
{
  var sheet = SpreadsheetApp.openById("1UBKi7VDo1aJjn6IwGMKvlxy4Jz9d9jVdY79zpOrkQP8");
  sheet.getRange("A2").setValue(e.parameter.p1) ;
  var n= sheet.getRange("I1:L16").getValues();
  var retStr =""
  for(var i = 0 ; i< n.length ; i++){ 
   retStr += n[i].join("\t") +"\n" //Insert a tab between each element and newline at each row
  }
  return ContentService.createTextOutput(retStr);
}

编辑:替代/强大选项

更好的选择是为Html内容提供服务,这样您就可以利用Html标记来改善数据的呈现方式。 在下面的数据中,我假设您要突出显示第6行,您可以使用css元素将文本设置为红色和粗体。 代码:

function doGet(e)
    {
      var sheet = SpreadsheetApp.openById("1UBKi7VDo1aJjn6IwGMKvlxy4Jz9d9jVdY79zpOrkQP8");
      sheet.getRange("A2").setValue(e.parameter.p1) ;
      var n= sheet.getRange("I1:L16").getValues();
      var retStr ="<style> .tcol { font-weight: bold; color : red; } </style> <table>"
      for(var i = 0 ; i< n.length ; i++){
       if ( i != 5) { //I assuming row 6 is what you want to highlight
        retStr +="<tr><td>"+ n[i].join("</td><td>") +"</td></tr>"
       } else {
        retStr +="<tr><td class = 'tcol'>" + n[i].join("</td><td class = 'tcol'>") +"</td></div></tr>"
       }

      }
      retStr += "</table>"
      return HtmlService.createHtmlOutput(retStr) 
     }

希望有所帮助!