Google表单提交匹配特定答案触发Google Sheet发邮件失效问题咨询
问题原因
你当前写的逻辑是适配「On edit」触发器的,「On form submit」触发器的事件对象结构和编辑触发器完全不同:表单提交时是整行写入新数据,不会单独触发某一列的编辑事件,所以e.range.getColumn()==6的判断永远不成立,脚本不会执行后续发信逻辑,自然没有效果也不会报错。
修复后的代码
function sendEmailapproval(e) { // 表单提交事件的e.values为按列顺序排列的数组,A列对应索引0,F列对应索引5 const campusCode = e.values ? e.values[5] : ''; if(campusCode == 'OAAd'){ const emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email Addresses").getRange("B3"); const recipient = emailRange.getValue(); const html = HtmlService.createTemplateFromFile("Email1.html"); const htmlText = html.evaluate().getContent(); const subject = "New Change Log Request Post 16"; const body = ""; const options = { htmlBody: htmlText } MailApp.sendEmail(recipient, subject, body, options) } }
注意事项
- 替换代码后请删除原有「On form submit」触发器,重新创建一次新的表单提交触发器,触发对象选择当前的电子表格,事件类型选择「表单提交时」
- 测试时请直接提交表单验证效果,不要在脚本编辑器直接运行函数(直接运行不会传入事件对象e,会报错)
- 如果后续你调整了表格的列顺序,校区编码不在F列了,需要对应修改
e.values[5]里的索引值,索引=列数-1 - 后续新增其他校区规则时,只需要在if判断后新增else if分支,匹配对应校区编码即可
内容的提问来源于stack exchange,提问作者Edwin B
相关产品推荐
相关产品推荐

