Google Sheets Apps Script onEdit触发器报错及特定行列触发需求咨询
问题解决:Google Sheets onEdit触发器报错及逻辑修正
错误原因
TypeError: Cannot read properties of undefined (reading 'source') 出现的核心原因:
onEdit是简单触发器,仅当用户手动编辑工作表时,系统才会自动传入事件对象e。若直接在脚本编辑器中手动运行该函数,e会是undefined,导致无法读取e.source。- 原代码存在冗余判断,且未添加目标行(第11行)的限制逻辑。
修正后的代码
function onEdit(e) { // 校验事件对象是否存在,避免手动运行报错 if (!e) { throw new Error("请通过编辑工作表触发此函数,不要手动运行"); } var hojaActual = e.source.getSheetByName("Duplicado"); // 确认当前编辑的是目标工作表 if (!hojaActual) return; var celdaActiva = e.range; var filaActiva = celdaActiva.getRow(); var colActiva = celdaActiva.getColumn(); // 仅在第11行、目标列(33/45/47)编辑时触发 if (filaActiva === 11 && (colActiva === 33 || colActiva === 45 || colActiva === 47)) { webScraping11(hojaActual, filaActiva); } }
关键修改点
- 新增
if (!e)校验:防止手动运行函数时抛出错误,同时给出明确提示。 - 移除冗余的
hojaActual.getName() === "Duplicado"判断:getSheetByName已确保返回目标工作表,无需重复验证。 - 添加
filaActiva === 11条件:严格限制仅在第11行编辑目标列时才触发webScraping11。
注意事项
- 不要手动运行
onEdit函数,必须通过在「Duplicado」工作表的第11行AG/AS/AU列输入内容触发。 - 确保
webScraping11函数能正确接收hojaActual(工作表对象)和filaActiva(行号)参数并执行逻辑。
内容的提问来源于stack exchange,提问作者Franco Vera
相关产品推荐
相关产品推荐

