Google表单提交自动发HTML邮件:内容显示[object Object]求排查
问题原因及修复方案
你遇到的[object Object]问题,根源是**GmailApp.sendEmail的参数传错了**。
错误点解析
GmailApp.sendEmail的正确参数顺序是:GmailApp.sendEmail(收件人邮箱, 邮件主题, 纯文本内容, 配置选项)
你现在把包含htmlBody的options对象直接传到了第三个参数的位置,而这个位置原本应该放纯文本格式的邮件内容,系统把对象转换成字符串后就变成了[object Object]。
修复后的代码
1. Google Apps Script 部分
function sendBookingConfirmationEmail(e) { var html = HtmlService.createTemplateFromFile("confirmationEmail.html"); var emailTo = e.response.getRespondentEmail(); var bookingParameters = e.response.getItemResponses(); var bookingName = bookingParameters[0].getResponse(); var numberOfTele = bookingParameters[1].getResponse(); var numberOfKids = bookingParameters[2].getResponse(); var numberOfAdults = bookingParameters[3].getResponse(); var scheduledSlot = bookingParameters[4].getResponse(); html.numberOfKids = numberOfKids; html.numberOfAdults = numberOfAdults; html.numberOfTele = numberOfTele; html.scheduledSlot = scheduledSlot; html.bookingName = bookingName; // 把预订人名字传入模板,邮件更友好 var htmlText = html.evaluate().getContent(); var emailSubject = "BOOKING CONFIRMATION"; // 生成纯文本版内容,兼容不支持HTML的邮件客户端 var plainText = `您好${bookingName},您的预订已确认: 儿童人数:${numberOfKids} 成人人数:${numberOfAdults} 电话设备数:${numberOfTele} 预订时段:${scheduledSlot} 此致 团队`; var options = { htmlBody: htmlText }; if (emailTo !== undefined) { // 修正参数顺序:纯文本内容作为第三个参数,options作为第四个 GmailApp.sendEmail(emailTo, emailSubject, plainText, options); } }
2. HTML模板部分(优化后更友好)
<!DOCTYPE html> <html> <head> <base target="_top"> <style> body { font-family: Arial, sans-serif; line-height: 1.6; } .booking-details { background: #f5f5f5; padding: 15px; border-radius: 5px; margin: 15px 0; } </style> </head> <body> <p>您好 <?= bookingName ?>,</p> <p>您的预订已成功确认,详情如下:</p> <div class="booking-details"> <p>儿童人数:<?= numberOfKids ?></p> <p>成人人数:<?= numberOfAdults ?></p> <p>电话设备数:<?= numberOfTele ?></p> <p>预订时段:<?= scheduledSlot ?></p> </div> <p>如有疑问请随时联系我们。</p> <p>此致敬礼<br> 团队</p> </body> </html>
额外提示
- 建议给每个变量加上分号,避免潜在语法问题
- 增加纯文本内容是为了兼容所有邮件客户端,部分客户端默认不显示HTML邮件
- 加入预订人名字能提升用户体验,让邮件更个性化
内容的提问来源于stack exchange,提问作者Gaspar Lam
相关产品推荐
相关产品推荐

