Google表格脚本 - 多个getRange循环

时间:2017-05-17 09:58:09

标签: javascript google-sheets

所以我遇到了一个新问题。

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

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]);

        } 
      } 
    };

1 个答案:

答案 0 :(得分: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()一次,然后在2d数组中循环值:

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

  

如果您可以找到最小化的方法,您的脚本将运行得更快   调用脚本对这些服务进行调用。