如何用Google Script每周二、周四将嵌入版Google表单发送至邮箱?
搞定Google表单嵌入版邮件发送 + 定时触发指南
嘿,作为编程新手遇到这个问题太正常啦!我帮你一步步拆解,先搞定单次发送的问题,再设置每周二、周四的定时触发,包你能成~
一、先修复单次发送的代码问题
看你提到的代码里,函数参数已经有form和email,但函数内部又重新定义了var form = ...,这会覆盖掉传入的参数,是个典型的新手小坑。另外要发送嵌入版表单,得用HTML格式的邮件,不然iframe嵌入代码会变成纯文本显示。
给你一个能直接用的修正版代码,替换成你的信息就行:
function sendEmbeddedForm() { // 👇 替换成你的表单ID(表单URL里d/后面的那串字符) const formId = "你的表单ID"; // 👇 替换成你的接收邮箱 const recipientEmail = "你的邮箱地址"; // 获取表单对象 const form = FormApp.openById(formId); // 生成适配邮件的嵌入代码(可调整width/height适配你的需求) const embedCode = `<iframe src="${form.getPublishedUrl()}" width="640" height="480" frameborder="0" marginheight="0" marginwidth="0">加载中...</iframe>`; // 邮件主题和HTML内容 const subject = "每周表单提醒:请填写表单"; const htmlBody = ` <p>你好,这是本周需要填写的表单:</p> ${embedCode} <p>如果无法正常加载,可直接访问表单链接:<a href="${form.getPublishedUrl()}">点击打开</a></p> `; // 发送HTML格式邮件(第三个参数是纯文本备用内容,留空也可以) GmailApp.sendEmail(recipientEmail, subject, "", { htmlBody: htmlBody }); Logger.log("邮件已成功发送!"); }
关键步骤说明:
- 找表单ID:打开你的Google表单,URL是
https://docs.google.com/forms/d/XXX/edit,中间的XXX就是表单ID - 为什么用iframe:嵌入表单必须用HTML的iframe标签,主流邮箱(Gmail、Outlook等)都支持这种嵌入方式
- 邮件格式设置:
GmailApp.sendEmail的第四个参数是配置项,设置htmlBody才能让邮件显示嵌入的表单,否则只会显示纯文本代码
测试方法:
在Google脚本编辑器里,点击顶部的「运行」按钮,第一次运行会提示授权(脚本需要访问你的Gmail和表单),按照提示点击「高级」→「转到你的脚本名称(不安全)」完成授权,之后再运行,去邮箱检查有没有收到(注意看垃圾邮件文件夹哦)。
二、设置每周二、周四的定时触发
单次发送成功后,就可以设置自动定时任务了:
- 在脚本编辑器左侧,点击「触发器」图标(那个小闹钟形状)
- 点击「添加触发器」按钮
- 按照以下参数设置:
- 选择要运行的函数:
sendEmbeddedForm - 选择部署类型:「时间驱动」
- 选择时间基于:「周计时器」
- 选择星期几:先选「周二」,设置发送时间(比如「上午9点到10点」)
- 点击保存,然后重复以上步骤,再创建一个「周四」的触发器
注意:Google的周计时器一次只能选一天,所以需要创建两个触发器分别对应周二和周四
- 选择要运行的函数:
三、常见问题排查
如果还是发不出邮件,检查这几点:
- 授权是否完成:第一次运行脚本必须完成授权,不要跳过或拒绝,否则脚本没有权限发送邮件和访问表单
- 表单是否已发布:打开表单右上角的「发送」→「嵌入」,如果能正常生成嵌入代码,说明表单是已发布状态,否则点击「发布」按钮
- 邮箱是否正确:检查
recipientEmail有没有写错,或者去垃圾邮件文件夹看看 - 查看错误日志:运行脚本后,点击编辑器顶部的「查看」→「日志」,如果有错误信息(比如表单ID错误、权限不足),根据提示修正就行
内容的提问来源于stack exchange,提问作者Tayron
相关产品推荐
相关产品推荐

