如何限制Google Sheet的on form submit仅响应指定表单或标签页?
限制Google Apps Script的onFormSubmit触发器仅响应指定表单/标签页
解决方法
要让函数只响应特定表单的提交,核心是利用表单提交事件对象的上下文信息,判断提交对应的标签页后再决定是否执行逻辑,修改后的代码如下:
function updateOrders(e) { // 定义要响应的目标标签页名称 const targetSheetName = "Edits"; // 检查当前提交是否来自指定标签页,不是则直接终止函数 if (e.range.getSheet().getName() !== targetSheetName) { return; } let ss = SpreadsheetApp.getActiveSpreadsheet(); let sourceSheet = ss.getSheetByName(targetSheetName); let lr = sourceSheet.getLastRow(); let sourceRange = sourceSheet.getRange(lr, 3, 1, 4).getValues(); let rn = sourceSheet.getRange(lr, 2).getValue() - 1000; let targetSheet = ss.getSheetByName('Orders'); targetSheet.getRange(rn, 3, 1, 4).setValues(sourceRange); }
关键细节
- 函数新增
e参数:这是onFormSubmit触发器自动传入的事件对象,包含了本次提交的所有上下文,比如提交对应的单元格范围e.range。 - 标签页校验逻辑:通过
e.range.getSheet().getName()获取提交对应的标签页名称,和你指定的目标名称对比,不匹配就直接退出,不会执行后续更新操作。 - 触发器绑定要求:必须将该函数绑定到表单提交触发器上(手动运行时
e参数为空,会报错,需避免手动测试)。
内容的提问来源于stack exchange,提问作者David D
相关产品推荐
相关产品推荐

