Google Script 为importrange脚本添加执行成功/错误提示
Google Script 跨表导入脚本错误提示实现方案
直接用try...catch语法捕获每个导入步骤的执行状态,就能实现成功/失败提示的匹配触发,不会出现脚本中途中断无法返回结果的问题。
修改后可直接使用的完整代码
function runsies() { const ui = SpreadsheetApp.getUi(); const successList = []; const errorList = []; // 执行Nordics区域数据导入 try { importRange( "1Xrhx03ub1uXdeFsS0mFZa2zi5uZL-qcuQDbe9oIULQU", "DATADUMP: LE!A2:I", "1GY-FjVa1XFNpKiR7wx3tCtGUMC2FRbLTORj-wI3iBK8", "Nordics - LE!A1" ); successList.push("Nordics - LE"); } catch (e) { errorList.push(`Nordics - LE 导入失败:${e.message}`); } // 执行UK区域数据导入 try { importRange( "13Y0NOJie1gYWXanQhtkSnTNsx4vt_bcqfUIXj0ePnac", "DATADUMP: LE!A2:I", "1GY-FjVa1XFNpKiR7wx3tCtGUMC2FRbLTORj-wI3iBK8", "UK - LE!A1" ); successList.push("UK - LE"); } catch (e) { errorList.push(`UK - LE 导入失败:${e.message}`); } // 弹出执行结果提示 let tipContent = ""; if (successList.length) { tipContent += `导入成功:共${successList.length}个区域数据更新完成,包含:${successList.join("、")}\n\n`; } if (errorList.length) { tipContent += `导入异常:共${errorList.length}个区域导入失败,详情如下:\n${errorList.join("\n")}`; } ui.alert("跨表数据导入任务结果", tipContent, ui.ButtonSet.OK); } function importRange(sourceID, sourceRange, destinationID, destinationRangeStart){ // 读取源表数据 const sourceSS = SpreadsheetApp.openById(sourceID); const sourceRng = sourceSS.getRange(sourceRange); const sourceVals = sourceRng.getValues(); // 校验源数据是否有效 if (!sourceVals.length || !sourceVals[0].length) { throw new Error("指定源范围无有效数据"); } // 定位目标表写入位置 const destinationSS = SpreadsheetApp.openById(destinationID); const destStartRange = destinationSS.getRange(destinationRangeStart); const destSheet = destStartRange.getSheet(); // 清空目标表旧数据 destSheet.clear(); // 匹配写入范围 const destRange = destSheet.getRange( destStartRange.getRow(), destStartRange.getColumn(), sourceVals.length, sourceVals[0].length ); // 写入新数据 destRange.setValues(sourceVals); SpreadsheetApp.flush(); }
实现逻辑说明
- 每个导入任务单独放在
try块中执行,执行过程中触发的任何错误(包括源表无权限、范围拼写错误、目标表无编辑权限、行列不匹配等)都会被对应的catch块捕获,不会导致整个脚本直接中途崩溃 - 用两个数组分别收集成功、失败的任务信息,所有任务全部执行完成后,统一调用表格原生弹窗展示结果,成功时显示完成的区域,失败时直接展示具体错误原因,不需要翻执行日志排查
- 新增了源数据空值校验,避免源范围选空时抛出用户看不懂的底层代码错误
- 原脚本的执行顺序没有改动,只有成功读取到源数据之后才会清空目标表旧内容,不会出现目标表被清空但新数据没写入的问题
内容的提问来源于stack exchange,提问作者Klinks
相关产品推荐
相关产品推荐

