繁体   English   中英

Google Sheet Script - 多个 getRange 循环

[英]Google Sheet Script - Multiple getRange looping

所以我有一个新问题。

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

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

        } 
      } 
    };

你可以看看类似的问题:

Google Script - 15 秒后出现内部错误

谷歌脚本 - 超过最大执行时间,帮助优化

Google 表格脚本,超时。 需要一种新的方式或把它倒过来

基本的解决方案是使用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...   
} 

在此处查看有关您的问题的更多信息:

如果您能找到减少脚本对这些服务的调用的方法,您的脚本将运行得更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM