【问题标题】:Google script using 'MailApp.sendEmail' truncating email addresses taken from Google SheetGoogle 脚本使用“MailApp.sendEmail”截断从 Google 表格中获取的电子邮件地址
【发布时间】:2017-11-24 13:46:23
【问题描述】:

请原谅我,因为这是我对 stackoverflow 的第一次查询,而且我更像是一名管理员,而不是任何类型的开发人员。我一直在寻找使用 Google 在他们的“Transformation Gallery”中提供的示例脚本。 它可以直接启动并运行,但我发现它会截断它从电子表格中获取的电子邮件地址值之一。

例如。请求者请求特定的休息日,填写表格并将请求发送给批准者。由于我们用于电子邮件命名约定的格式是 first_lastname@xxxx.com,因此审批者邮件会退回。

所以最终发生的事情是它被截断为 lastname@xxxx.com 并退回。但是,当经理批准请求时,发送给请求者的返回电子邮件会正常,因此一个 MailApp.sendEmail 例程可以正常工作,但不能正常工作。

据我所知,此函数管理“经理电子邮件”字段中的值:

 d.manager_email = manager_email

message = Utils.processTemplate(SETTINGS.PENDING_MANAGER_EMAIL, d);
subject = Utils.processTemplate(SETTINGS.PENDING_MANAGER_EMAIL_SUBJECT, d);

MailApp.sendEmail(manager_email,subject,"",{ htmlBody: message });

setRowData(_sheet, d);

根据批准向请求者发送回复的工作似乎是这样的:

var approveByKey = function(k, user) {
var d = _getDataByKey(k);
d.state = APPROVED_STATE;
d.actor = user;

var message = Utils.processTemplate(SETTINGS.USER_APPROVAL_EMAIL, d);
var subject = Utils.processTemplate(SETTINGS.USER_APPROVAL_EMAIL_SUBJECT, d);
MailApp.sendEmail(d.emailAddress,subject,"",{ htmlBody: message });

if(SETTINGS.SEND_APPROVAL_NOTICE_EMAIL == 1) {
  var message = Utils.processTemplate(SETTINGS.APPROVAL_NOTICE_EMAIL, d);
  var subject = Utils.processTemplate(SETTINGS.APPROVAL_NOTICE_EMAIL_SUBJECT, d);
  MailApp.sendEmail(SETTINGS.APPROVAL_NOTICE_EMAIL_TO, subject, "",{ htmlBody: message });
}

我不太清楚为什么第一个示例会截断从“manager_email”中获取的值。非常感谢任何建议。

谢谢 雷

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    从上面的示例中,区别是 d.emailAddressd.manager_emailSETTINGS.APPROVAL_NOTICE_EMAIL_TO 如果 d.emailAddressSETTINGS.APPROVAL_NOTICE_EMAIL_TO 正在工作,那么如果更改为其中之一,它应该可以工作。

    // Assuming this variable assignment is somewhere in the method of the top example
    var d = _getDataByKey(k);
    
    // Change the `manager_email` to d.emailAddress or to SETTINGS.APPROVAL_NOTICE_EMAIL_TO
    MailApp.sendEmail(d.emailAddress, subject,"",{ htmlBody: message });
    

    除此之外,如果这不是问题,则需要更多代码,因为电子邮件在已发布的部分代码之前已被更改。 SETTINGSd 设置在哪里

    【讨论】:

    • 这为我指明了正确的方向。在谷歌应用程序提供的脚本的另一部分中,他们将一些格式应用于 var 'manager_email'。我删除了它,它现在按预期工作。谢谢。
    【解决方案2】:

    我正在使用这个示例来提供我正在开发的应用程序的 80% 的功能。

    更改电子邮件地址的代码就是这一行;

    manager_email = d[SETTINGS.MANAGERS_EMAIL_COLUMN_NAME].match(EMAIL_REGEX);
    

    我不得不将其更改为:manager_email = d[SETTINGS.MANAGERS_EMAIL_COLUMN_NAME] ; 我无法获得“.match(var EMAIL_REGEX = new RegExp("[a-zA-Z+0-9\.-]+@[a-zA-Z0-9\.-]+", 'i');” 好好利用我的电子邮件地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多