如何避免Google Sheets batchUpdate接口无请求参数时的调用报错
问题原因
当S列中没有包含Found文本的行时,你生成的requests数组是空数组,而Sheets API的batchUpdate接口要求必须传入至少一条请求,因此抛出该错误。
解决方案
只需要在调用batchUpdate前增加非空判断,只有存在待执行请求时才调用接口即可,修改后的完整代码如下:
function deleteRows() { const sheetName = "Sheet"; // 请设置工作表名称 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName(sheetName); const sheetId = sheet.getSheetId(); const requests = sheet .getRange(`S1:S${sheet.getLastRow()}`) .createTextFinder("Found") .findAll() .map(r => r.getRow()) .reverse() .map(r => ({deleteDimension:{range:{sheetId:sheetId,startIndex:r - 1,endIndex:r,dimension:"ROWS"}}})); // 新增判断:仅当有删除请求时调用API if (requests.length > 0) { Sheets.Spreadsheets.batchUpdate({requests: requests}, ss.getId()); } }
修改后如果没有符合删除条件的行,函数会直接正常结束,不会抛出错误,后续要执行的函数可以正常运行。
内容的提问来源于stack exchange,提问作者mishelles
相关产品推荐
相关产品推荐

