簡體   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