首頁 >web前端 >js教程 >為什麼我的 Google Apps 腳本這麼慢?

為什麼我的 Google Apps 腳本這麼慢?

DDD
DDD原創
2024-12-01 03:05:14808瀏覽

Why is my Google Apps Script so slow, and how can I optimize `getValues` and `setValues` usage?

由於過度使用getValues 和setValues 導致處理時間較長

問題:

代碼因過度使用getValues 和setValues方法而受到影響,這可能會嚴重影響處理時間,特別是對於較大的資料集。

最佳化服務:

最小化服務呼叫:

  • 避免不必要的呼叫Google Apps 腳本服務。相反,在本地快取資料並在腳本中對其進行操作。

前瞻性快取:

  • Google Apps 腳本採用內建外觀-提前快取以檢索可能的資料

最小化讀取/寫入操作:

  • 透過擷取和操作陣列中的資料來讀取與寫入操作。這減少了對伺服器的呼叫次數。

避免交替讀取/寫入:

  • 交替讀取和寫入指令會破壞前瞻快取。規劃操作以最小化這種交替模式。

使用陣列:

  • 使用陣列有效地儲存資料。使用單一 getValues 呼叫將所有資料檢索到數組中,對其執行操作,然後使用單一 setValues 呼叫將其寫回。

範例:

考慮以下程式碼片段:

// Slow version: Alternating read and write operations
const sourceRange = SpreadsheetApp.getActiveSheet().getRange("A1:D2");
const targetRange = sourceRange.offset(2, 0);
for (let i = 0; i < sourceRange.getNumRows(); i++) {
  for (let j = 0; j < sourceRange.getNumColumns(); j++) {
    const value = sourceRange.getCell(i + 1, j + 1).getValue();
    targetRange.getCell(i + 1, j + 1).setValue(value);
  }
}

// Fast version: Batch read and write operations
const sourceValues = sourceRange.getValues();
targetRange.setValues(sourceValues);

透過批次讀取和寫入操作,第二個程式碼片段顯著減少了對服務的呼叫次數並縮短了處理時間。

以上是為什麼我的 Google Apps 腳本這麼慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn