Google Forms脚本报错:无法找到sendEmail方法求助
解决Google脚本中
sendEmail方法找不到的问题 Hey Reagan, 很高兴能帮你搞定这个问题!你碰到的cannot find method sendEmail错误,大概率是因为调用这个方法的姿势不对——在Google Apps Script里,发送邮件必须通过MailApp或者GmailApp这两个官方服务来调用sendEmail,直接写sendEmail(...)肯定会找不到方法哒。
我给你写了一份适配需求的完整代码,专门用来把表单回复以纯文本形式发送到你的邮箱,完全没有冗余内容:
function onFormSubmit(e) { // 提取表单提交的所有问题和回复 const formResponses = e.response.getItemResponses(); let plainTextContent = ""; // 把每个问题和对应的答案整理成纯文本格式 formResponses.forEach(response => { const questionTitle = response.getItem().getTitle(); const userAnswer = response.getResponse(); plainTextContent += `${questionTitle}: ${userAnswer}\n\n`; }); // 发送纯文本邮件,这里用MailApp(GmailApp也能实现,功能更丰富) MailApp.sendEmail({ to: "your-email@example.com", // 替换成你要接收邮件的地址 subject: "", // 留空就不会有主题,完全符合你的需求 body: plainTextContent }); }
关键要点说明:
- 这个
onFormSubmit函数是专门对应表单提交事件的,不能手动运行,必须设置「安装型触发器」才能触发(后面我会说怎么设置) e.response是表单提交时自动传入的参数,里面包含了所有用户提交的回复数据,我们通过getItemResponses()逐个提取问题和答案- 用
forEach循环把内容整理成清晰的纯文本格式,每个问题和答案之间换行分隔,阅读起来很舒服 - 发送邮件时用
MailApp.sendEmail(),如果需要抄送、密送这类额外功能,可以换成GmailApp.sendEmail(),两者都支持纯文本的body参数
怎么设置触发器让脚本生效:
- 打开你的Google表单,点击右上角的「扩展程序」→「Apps脚本」
- 把上面的代码粘贴进去,替换掉
your-email@example.com为你的实际邮箱 - 点击左侧菜单栏的时钟图标(「触发器」选项)
- 点击「添加触发器」,按照下面的设置配置:
- 选择要运行的函数:
onFormSubmit - 选择事件源:「表单」
- 选择事件类型:「当表单提交时」
- 选择要运行的函数:
- 保存后会弹出权限授权提示,按照步骤允许脚本访问你的邮箱和表单数据就可以了
额外注意事项:
- 一定要注意拼写和大小写,比如
MailApp不能写成mailapp,sendEmail的拼写也不能错 - 如果还是报错,检查一下是不是没有给脚本授予邮件发送的权限,第一次触发时必须完成授权
- 如果你完全不需要邮件主题,把
subject设为空字符串就好,邮件会以无主题的形式发送
内容的提问来源于stack exchange,提问作者Reagan Lyle
相关产品推荐
相关产品推荐

