2017-05-17 8 views
1

ですので、私は新しい問題があります。Googleシートスクリプト - 複数のgetRangeループ

これまでの私のスクリプトでは、シートをループして "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

あなたは、同様の質問を見てもよい:

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

Basicソリューションは、2次元配列でgetValues() 1時間、その後、ループの値を使用することです。

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についての詳細情報を参照してください:

あなたは は、スクリプトは、これらのサービスに作る呼び出しを最小化する方法を見つけることができればあなたのスクリプトは高速に実行されます。

+0

ああ、スクリプトを実行するのに時間がかかるからです。 –

+0

ループの中には 'getValues()'があるので、そうだと思います。 –

関連する問題