谷歌脚本使用' MailApp.sendEmail'截断从Google表格中获取的电子邮件地址

时间:2017-10-03 11:03:17

标签: google-apps-script

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

例如。请求者要求关闭特定日期,填写表单并向批准者发出请求。审批者邮件反弹,因为我们用于电子邮件命名约定的格式为first_lastname@xxxx.com。

所以最终发生的事情就是截断到lastname@xxxx.com并反弹。但是,当经理批准该请求时,返回给请求者的电子邮件正常,因此一个MailApp.sendEmail例程工作正常,但一个没有。

据我所知,此功能管理Managers Email字段中的值:

 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'中取得的值。任何建议都非常感谢。

由于 射线

2 个答案:

答案 0 :(得分:0)

从上面的例子中,差异是d.emailAddress& d.manager_email&如果SETTINGS.APPROVAL_NOTICE_EMAIL_TO& d.emailAddress SETTINGS.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的任何地方

答案 1 :(得分:-1)

我正在使用此示例来提供我正在处理的应用程序的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');" 与我的电子邮件地址配合使用。