Google Sheet脚本问题:无法按表单顺序发邮件及实现问题加粗
解决Google表单提交邮件的顺序问题与格式需求
修改后的脚本
function onFormSubmit(e) { // 初始化纯文本和HTML格式的邮件内容 let textMessage = 'New Work Order Request:\n\n'; let htmlMessage = '<h3>New Work Order Request:</h3><ul>'; // 获取按表单顺序排列的所有问题与回复 const itemResponses = e.response.getItemResponses(); for (const itemResponse of itemResponses) { // 获取问题标题 const question = itemResponse.getItem().getTitle(); // 获取回复内容,处理多选情况(数组转字符串) let response = itemResponse.getResponse(); if (Array.isArray(response)) { response = response.join(', '); } // 构建纯文本内容(兼容不支持HTML的邮箱) textMessage += `${question}: ${response}\n`; // 构建HTML内容,问题加粗 htmlMessage += `<li><strong>${question}:</strong> ${response}</li>`; } htmlMessage += '</ul>'; // 发送邮件,同时支持纯文本和HTML格式 MailApp.sendEmail({ to: Session.getEffectiveUser().getEmail(), subject: 'New Work Order Request', body: textMessage, htmlBody: htmlMessage }); }
关键修改说明
- 按表单顺序展示:不再遍历无序的
e.namedValues,而是通过e.response.getItemResponses()获取表单定义顺序的问题与回复,确保和表单页面的问题顺序完全一致。 - 问题加粗格式:使用HTML的
<strong>标签包裹问题文本,通过htmlBody参数发送HTML格式邮件保证加粗效果;同时保留纯文本版本的body参数,兼容不支持HTML的邮箱客户端。 - 处理多选回复:如果是多选类型问题,回复会返回数组,脚本自动将其转为逗号分隔的字符串,避免显示成
[选项1,选项2]的格式。
替换脚本步骤
- 打开关联的Google Sheet,点击顶部菜单栏的「扩展程序」→「Apps脚本」。
- 删除原有代码,粘贴上面的新脚本。
- 点击左上角保存按钮,给项目命名(比如「表单提交邮件通知」)。
- 第一次运行需授权:点击运行按钮,按提示完成授权(允许脚本访问表单和邮件)。
- 检查触发器:点击左侧「触发器」,确认存在
onFormSubmit的表单提交触发器,没有则点击「添加触发器」,选择事件类型为「表单提交」后保存。
内容的提问来源于stack exchange,提问作者Heidi
相关产品推荐
相关产品推荐

