【问题标题】:How can I return the range spreadsheet in the same form as in the that it is become row by row如何以与逐行相同的形式返回范围电子表格
【发布时间】:2017-04-03 07:30:58
【问题描述】:

我是编程初学者。 我对单元格 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

最好的问候,亚历山大。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案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) 
         }
    

    希望有帮助!

    【讨论】:

    • 亲爱的杰克!非常感谢您的快速答复!这正是我所需要的。当您返回时(在由颜色标识的电子表格中),我可以突出显示或更改范围内找到位置的字体颜色吗?最好的问候,亚历山大。
    • @AlexanderBaskakov 我已经修改了上面的代码,以显示如何突出显示特定行。但是,您首先需要知道要突出显示哪一行。电子表格中的 getValues() 没有提供有关单元格颜色的信息。您已经使用了一些其他函数,例如 range.getBackgrounds() 来确定具有不同背景颜色的行并相应地突出显示该行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多