腳本掃描列出客戶訂單資訊、識別州代碼並組合名字和姓氏。它還在必要時插入空白行。然而,由於頻繁地呼叫 Range.getValue() 和 Range.setValue(),大列的處理時間變得過長。
為了減少處理時間,建議盡量減少呼叫Google 的服務,包含 Range.getValue() 和 Range.setValue()。可以實施以下最佳化:
以下是解決處理時間過長問題的最佳化腳本:
function format() { const SS = SpreadsheetApp.getActiveSpreadsheet(); const SHEET = SS.getActiveSheet(); const LAST_ROW = SHEET.getRange('A:A').getLastRow(); let row, range1, cellValue, offset1, offset2, offset3; // Loop through all cells in column A for (row = 0; row < LAST_ROW; row++) { range1 = SHEET.getRange(row + 1, 1); // If cell substring is a number, skip it as substring cannot process numbers cellValue = range1.getValue(); if (typeof cellValue === 'number') continue; // Check for the state code prefix "-" const DASH = cellValue.substring(0, 1); // Get neighboring cells offset1 = range1.offset(1, 0).getValue(); offset2 = range1.offset(2, 0).getValue(); offset3 = range1.offset(3, 0).getValue(); // Handle state code "-" if (DASH === '-') { // Merge cells 1 and 2 and write "Order complete" in cell 2 range1.offset(1, 0).setValue(offset1 + ' ' + offset2); range1.offset(2, 0).setValue('Order complete'); } // Insert cell if offset 3 is not blank if (DASH === '-' && offset3 !== '') { // Select cells from 3 rows down SHEET.getRange(row + 1, 1, LAST_ROW) .offset(3, 0) .moveTo(range1.offset(4, 0)); } } }
透過遵循這些最佳化,腳本將透過最大限度地減少對Range.getValue() 和Range.setValue().
以上是如何最佳化 Google Apps 腳本以減少因頻繁呼叫 Range.getValue() 和 Range.setValue() 導致的過多處理時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!