脚本扫描列客户订单信息、识别州代码并组合名字和姓氏。它还在必要时插入空白行。然而,由于频繁调用 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中文网其他相关文章!