1

Google Apps Scriptでこの問題が発生しています。アプリケーションサーバーのリクエストが長時間かかるため、タイムアウトしています。私はちょうど私のコーディングがより速く動くように少しきれいにすることができるかどうかを見たいと思っていましたか、それともうまくいく別の方法がありますか?以下Forループのタイムアウト:JavaScript/Google Apps Script

コード:任意の応答のための

for (var y = 1; y < listLast ; y++) { 

    var matchor = listSheet.getRange("B" + y).getValue(); 
    var listEmCo = listSheet.getRange("A" + y).getValue(); 
    if(matchor == "Match") { 
    Logger.log("Do Nothing"); 
    } else { 
    for (var x = 0; x < formLast; x++) { 

    if(listEmCo == formData[x]){ 

    listSheet.getRange("B"+ [y]).setValue("Match"); 
    break; 

    } else { 

    listSheet.getRange("B"+ [y]).setValue("No Match"); 

    } 
    } 
} 
} 

感謝:)

+0

listLastとformLastの値は何ですか?彼らは無限ループの理由かもしれませんか? – RhinoDevel

+0

これらの値はメールアドレスか「一致」または「一致しません」のいずれかです –

答えて

3

ループで.getValue();を使用しないでください。この操作は重いです。

range.getValues()を使用し、値を取得するために配列をループしてください。

計画は次のとおりです。初期range

  • var data = range.getValues();
  • でデータを

    1. ゲットする空の配列がarray = [];
    2. ループのデータを新しい値を書き込むと、新しい配列を作る、とそれを埋めるために作ります適切な値[["value1"], ["value2"], ...,]注。 2D配列でなければなりません。
    3. ループの後に新しい値を貼り付ける範囲を定義します。rangeTo
    4. rangeTo.setValues(array);を使用して新しい値を貼り付けます。

      はトピックに関する多くの質問を参照してください

      タグ#別-GET-データからレンジ-質問:

    もっと見ます

    http://stackoverflow.com/questions/39859421/google-script-internal-error-after-15-seconds

    http://stackoverflow.com/questions/39586911/google-script-exceeded-maximum-execution-time-help-optimize

    http://stackoverflow.com/questions/38618266/google-sheet-script-times-out-need-a-new-way-or-flip-it-upside-down

    http://stackoverflow.com/questions/44021567/google-sheet-script-multiple-getrange-looping

    Code runs too slow

  • 関連する問題