2017-11-21 2 views
0

私はこのコードを私に提供されたシートから取り出しましたが、使用するには非効率的でタイムアウトになりました。私は、時間制限内で完了させるために、それを超シンプルな形式で書き直すためにHARDを試みています。これは私が始めたものです:Clueless - 実行時間を超越

function addTo() { 
var ss = SpreadsheetApp.getActiveSheet(); 
// Style 1 
    // Size 2 
    var num1 = ss.getRange("AL2").getValue(); 
    var num2 = ss.getRange("O2").getValue(); 
    ss.getRange("O2").setValue(num1+num2); 
    ss.getRange("AL2").clearContent(); 
    // Size 4 
    var num1 = ss.getRange("AM2").getValue(); 
    var num2 = ss.getRange("P2").getValue(); 
    ss.getRange("P2").setValue(num1+num2); 
    ss.getRange("AM2").clearContent(); 

それから約200回繰り返します。誰かが代わりに範囲として処理を提案しました。それは理にかなっており、より迅速なプロセスをもたらすはずです。しかし、私はそれを書くのに困っている。

function addallatOnce() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var startrange = ss.getRange("Inventory Received!B2:U48"); 
    var addrange = ss.getRange("Inventory Received!Y2:AR48"); 
    var complete = startrange+addrange 
    ss.getRange("Inventory Received!B50:U96").setValues(complete); 
} 

私は通常、コードを書いていないが、私は私が読んでいるかを理解することができますが、私はそれを書くことについては何も知らない:これは私がこれまでに(それはしかし働いていない)持っているものです。ヘルプは非常に高く評価されます。前もって感謝します。

+0

addTo関数全体を表示してください。 – Cooper

答えて

0

Googleのスクリプトによる

Googleはコード最適化に関するいくつかのexcellent documentationを持っています。この場合、配列を使用してバッチ処理を実行できます。範囲でgetValues()関数を使用して、スプレッドシートデータを配列にフィードします。 getValues()は、範囲内の値の2次元配列を返します。すべての値をループし、値ごとに値を加算します。次に、目的の範囲に完全配列の値を代入します。

function addallatOnce() { 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var startrange = ss.getRange("Inventory Received!B2:U48").getValues(); 
 
    var addrange = ss.getRange("Inventory Received!Y2:AR48").getValues(); 
 
    var complete = addrange; 
 
    var row = 0; 
 
    var col = 0; 
 
    for (row = 0; row < complete.length; row++) { 
 
    for (col = 0; col < complete[0].length; col++) { 
 
     complete[row][col] = addrange[row][col] + startrange[row][col]; 
 
    } 
 
    } 
 
    ss.getRange("Inventory Received!B50:U96").setValues(complete); 
 
}

Googleのスクリプトなし

受信インベントリのセルB50に次の数式を入れて:

=ARRAYFORMULA(B2:U48+Y2:AR48) 

は、ドキュメントhereを参照してください。

関連する問題