【问题标题】:Google Sheet Script - Multiple getRange loopingGoogle Sheet Script - 多个 getRange 循环
【发布时间】:2017-05-17 09:58:09
【问题描述】:

所以我有一个新问题。

到目前为止,我的脚本可以循环一个工作表并找到文本“银行”,它将背景颜色设置为红色,它会从另一个单元格中获取标记的值并记录它。一旦它完成了它就会崩溃,所以循环就会中断,我不知道为什么?

function sortBank() { 
      var sheet = SpreadsheetApp.getActiveSheet(); 
      var rows = sheet.getDataRange(); 
      var numRows = rows.getNumRows(); 
      var values = rows.getValues(); 
      var rowsDeleted = 0

      for (var i = 0; i <= numRows - 1; i++) { 
        var row = values[i]; 
        if (row[8].indexOf('Bank') > -1) { /** Set the Job prefix **/

          sheet.getRange(parseInt(i)+1,9).setBackgroundColor("#f44336");
          var values = sheet.getRange(parseInt(i),2).getValues();

          Logger.log(values[0][0]);

        } 
      } 
    };

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    你可以看看类似的问题:

    Google Script - Internal Error after 15 seconds

    Google script - Exceeded maximum execution time , help optimize

    Google sheet script, times out. Need a new way or flip it upside down

    基本解决方案是使用一次getValues(),然后循环二维数组中的值:

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var rows = sheet.getDataRange(); 
    var data = rows.getValues();
    
    for (var i = 0; i < numRows; i++)
    {
      var j = SomeValue; // column number - 1
      var row = data[i]; // row from origonal data range
      var value = row[j]; // value from data
      // some other code...   
    } 
    

    查看有关您的问题的更多信息here

    如果您能找到将 调用这些服务的脚本。

    【讨论】:

    • 啊,是因为脚本运行时间过长?
    • 我想是的,因为循环中有getValues()
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2019-08-27
    • 2016-12-16
    相关资源
    最近更新 更多