Google表格Apps Script生成发送QR码邮件函数失效排查求助
问题排查与修复方案
代码语法错误
- 字符串引号与URL实体错误:
qrCodeUrlPrefix变量定义时用了双单引号开头,属于语法错误;同时URL里的&是HTML实体,在JavaScript中应直接用&。
修复后:var qrCodeUrlPrefix = 'https://chart.googleapis.com/chart?cht=qr&chs=150x150&chl='; - HTML内容换行未拼接:
htmlBody的字符串在换行处未正确拼接,会触发语法报错。可通过字符串拼接或模板字符串修复:
字符串拼接方式:
模板字符串方式(更简洁):htmlBody: 'Hello ' + name + ',<br><br>Thank you for registering. Please find your ' + 'QR code below.<br><img src="' + qrCodeUrl + '"><br>Best Regards,<br>Event Team'htmlBody: `Hello ${name},<br><br>Thank you for registering. Please find your QR code below.<br><img src="${qrCodeUrl}"><br>Best Regards,<br>Event Team`
触发器与权限问题
- 权限未授权:首次运行脚本需手动完成邮件发送权限授权,触发器运行时可能因未授权失败。先手动执行
sendQrCodeEmails函数,完成授权流程。 - 触发器配置错误:若为表单提交触发,需确认触发器选择
表单提交事件;若为定时触发,要确保触发时机合理,且脚本能获取最新表单数据。 - 列索引匹配问题:确认表格中姓名在第二列(索引1)、邮箱在第三列(索引2),列位置不匹配会导致无法获取正确的收件人信息,邮件发送失败。
完整修复后的代码
function sendQrCodeEmails() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getDataRange().getValues(); var qrCodeUrlPrefix = 'https://chart.googleapis.com/chart?cht=qr&chs=150x150&chl='; for (var i = 1; i < data.length; i++) { var email = data[i][2]; // 第三列为邮箱 var name = data[i][1]; // 第二列为姓名 var qrCodeUrl = qrCodeUrlPrefix + encodeURIComponent(email); // 发送带二维码的邮件 MailApp.sendEmail({ to: email, subject: 'Your Event QR Code', htmlBody: `Hello ${name},<br><br>Thank you for registering. Please find your QR code below.<br><img src="${qrCodeUrl}"><br>Best Regards,<br>Event Team` }); } }
内容的提问来源于stack exchange,提问作者Hani Almutlaq
相关产品推荐
相关产品推荐

