这是与此链接类似的问题,但略有不同: Skipping blank emails in Google Apps Script Mail Merge
我设置了一个表单/表单,当用户填写表单时,它会生成一个收据电子邮件(不包含某些收据所做的表单内容),然后发送给收件人。但是,当用户将此字段留空时,我会收到表单触发器错误,这可以理解为什么脚本没有完成。我试图找出当收件人/电子邮件字段为空时如何防止脚本尝试发送电子邮件。不幸的是,在表单上填写所需的电子邮件字段不是一个选项,因为奇怪的是,不是每个人都有一个电子邮件地址(如果这是一个选项我肯定只需要输入一个电子邮件地址)。
我已根据上面提供的链接尝试了以下代码段。
// Send Email to recipient(s) declared above in @var sendEmail
if (e.values[11] != null) {
var sendEmail = e.values[11]; //email field column
var subject = "subject message";
var body = "body message";
MailApp.sendEmail(sendEmail, subject, body, {
name: "Community Home Health Care",
body: body,
noReply: true,
})
我也试过而不是
(e.values[11] != null)
使用
(e.values[11] != "")
我省略的其余代码(超出我所显示的内容)只是采用表单字段响应并生成转换为PDF的文档,该文档按预期工作。电子邮件部分也有效,只是试图消除我偶尔会收到的失败的脚本电子邮件。
由于
答案 0 :(得分:0)
首先假设传递了12个项目(0到11),并且电子邮件是要传递的最后一个项目。如果是这种情况,那么测试项目是否定义为:
if(typeof e.values[11] !== 'undefined')
如果您使用链接到的链接的邮件合并教程,并使用getRowsData()函数获取表单响应,您应该能够使用包含电子邮件地址的列的标题,例如e.values.emailAddress和get:
if(typeof e.values.emailAddress !== 'undefined')
根据数据的定义方式,这可能会有所不同。