【问题标题】:Google Form/Sheet - Skip blank email google script谷歌表单/表格 - 跳过空白电子邮件谷歌脚本
【发布时间】:2017-06-19 22:04:39
【问题描述】:

这是与此链接类似的问题,但略有不同: Skipping blank emails in Google Apps Script Mail Merge

我设置了一个表单/表格,当用户填写表单时,它会生成一个收据电子邮件(不包含某些收据那样的表单内容),然后发送给收件人。但是,当用户将此字段留空时,我会收到表单触发错误,这可以理解为什么脚本没有完成。我试图弄清楚当收件人/电子邮件字段为空白时如何防止脚本尝试发送电子邮件。不幸的是,在表单上设置所需的电子邮件字段不是一个选项,因为奇怪的是,不是每个人都会有一个电子邮件地址(如果这是一个选项,我当然只需要输入一个电子邮件地址)。

我已经根据上面提供的链接尝试了以下代码sn-p。

   // 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 的文档,该文档按预期工作。电子邮件部分也可以,只是试图消除我偶尔收到的失败的脚本电子邮件。

谢谢

【问题讨论】:

    标签: google-sheets google-forms


    【解决方案1】:

    首先假设传递了 12 个项目(0 到 11),而电子邮件是最后一个传递的项目。如果是这种情况,则测试该项目是否定义为:

    if(typeof e.values[11] !== 'undefined')
    

    如果您使用链接到的帖子中链接的邮件合并教程,并使用 getRowsData() 函数获取表单回复,您应该能够使用包含电子邮件地址的列的标题,例如e.values.emailAddress 并获取:

    if(typeof e.values.emailAddress  !== 'undefined')
    

    这可能因您的数据定义方式而异。

    【讨论】:

    • 我尝试了第一个建议:code'e.values[11] !== 'undefined',但没有成功,仍然尝试发送电子邮件。如果我尝试使用.emailAddress 的其他方法并且实际的标头值是电子邮件地址,我将如何在不更改标头的情况下使用它(如果可能)?
    • 您是否尝试过使用调试器并在从工作表中读取数据后设置停止点?在您的 getRowsData() 函数将数据保存到变量后立即执行此操作。这将是一个对象。在调试器窗口中,您可以展开对象并将获得该项目的键。我相信对于电子邮件地址的标题,密钥将变为 .eMailAddress 但我可能会关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多