Google Apps Script如何用prompt返回值作为range解决Range not found报错
问题修复方案
错误根因
你代码中调用response.getResponseText时遗漏了方法必需的括号,导致传入ss.getRange()的参数是函数对象而非用户输入的range字符串,因此触发range不存在异常。
修复后的完整代码
function myFunction(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var ui = SpreadsheetApp.getUi(); var rangeResponse = ui.prompt("Enter Range:",ui.ButtonSet.OK_CANCEL); if(rangeResponse.getSelectedButton() == ui.Button.OK){ // 补全getResponseText的执行括号,同时去除首尾空格避免输入冗余空格报错 var inputRangeStr = rangeResponse.getResponseText().trim(); // 新增空值校验 if(!inputRangeStr){ ui.alert("Range输入不能为空"); return; } var valueResponse = ui.prompt("Set Value:",ui.ButtonSet.OK_CANCEL); if(valueResponse.getSelectedButton() == ui.Button.OK){ var givenvalue = valueResponse.getResponseText(); // 新增异常捕获,处理用户输入非法Range格式的场景 try { ss.getRange(inputRangeStr).setValue(givenvalue); } catch (e) { ui.alert("输入的Range不合法,请检查格式是否正确,示例:A1、Sheet1!B2:C5"); } } } }
补充说明
- 合法的Range输入支持两种格式:操作当前工作表直接输入A1表示式即可,比如
A1:B3;操作其他工作表需要加工作表前缀,比如数据表!C2:C10 - 新增的异常捕获逻辑可以避免非法输入时直接抛出后台异常,会给用户友好的格式提示
内容的提问来源于stack exchange,提问作者Debs
相关产品推荐
相关产品推荐

