示例代码:
// 使用缓存机制避免频繁读取数据 function getData() { var cache = CacheService.getScriptCache(); var cachedData = cache.get('data'); if (cachedData) { return JSON.parse(cachedData); } else { var data = // 处理数据的代码 cache.put('data', JSON.stringify(data), 300); // 缓存数据 5 分钟 return data; } }
// 把代码拆成多个函数并使用触发器 function processData(data) { // 处理一部分数据,并返回剩余数据 return remainingData; }
function processAllData() { var data = getData(); var remainingData = processData(data); if (remainingData.length > 0) { ScriptApp.newTrigger('processAllData') .timeBased() .after(30 * 1000) // 30 秒后再次运行 .create(); } }
// 使用数组批量操作数据 function processBatchData() { var data = getData(); var batchSize = 100; var startRow = 2; // 数据的起始行数 var numRows = data.length; // 要处理的总行数 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var row = startRow; while (row <= numRows) { var values = data.slice(row - startRow, row - startRow + batchSize); // 处理 values 数组中的数据 sheet.getRange(row, 1, values.length, values[0].length).setValues(values); row += batchSize; } }