Google Sheets下拉框切换触发模态对话框报错:无法读取range属性
问题修复:Google Sheets脚本报错“Cannot read properties of undefined (Reading 'range')”
错误原因
- 事件对象
e未初始化:onEdit是Google Sheets的简单触发器,仅当用户手动编辑表格单元格时才会自动传入事件对象e。若直接在脚本编辑器中手动运行该函数,e会是undefined,访问e.range必然报错。 - 变量定义顺序错误:原代码先调用
showModalDialog(widget),但widget在后续才定义,会触发“widget未定义”的额外错误。
修复后的代码
function onEdit(e) { // 先判断事件对象是否存在,避免手动运行报错 if (!e) { SpreadsheetApp.getUi().alert('请通过编辑表格触发此函数,不要手动运行'); return; } const sheet = e.range.getSheet(); // 限定触发范围:Sheet1的A1单元格,且值为'a' if (sheet.getName() !== 'Sheet1' || e.range.getA1Notation() !== 'A1' || e.value !== 'a') { return; } // 先创建HTML对话框内容,再调用弹窗 const widget = HtmlService.createHtmlOutput(` <p><h1>共同创建或共同设计活动设计的核心要素</h1></p> <p>1) 活动目标、成果或干预措施通过共同创建或共同设计流程确定。</p> <p>2) 地方或区域合作伙伴、合作政府实施实体、创新激励机构获奖者和/或利益相关者(包括社区)参与共同设计或共同创建流程。</p> <p>3) 共同设计或共同创建流程已记录在案。</p> <p>4) 共同创建或共同设计流程为活动设计做出了实质性贡献。</p> `); SpreadsheetApp.getUi().showModalDialog(widget, "实践标准"); }
注意事项
- 不要直接在脚本编辑器中点击运行按钮测试
onEdit,需回到Sheet1的A1单元格,选择下拉框中的'a'触发自动执行。 - 确保A1单元格已设置下拉验证并包含选项'a'。
内容的提问来源于stack exchange,提问作者Jacob Gray
相关产品推荐
相关产品推荐

