我在Google工作表中有一些要发送邮件的电子邮件地址。 当我从代码表中获取这些地址并尝试发送电子邮件时,收到错误消息“无效的电子邮件地址xyz @ mydomain.com,pqr @ mydomain.com”
在以下功能中使用
sendEmail(recipient, subject, body, options)
但是,当我手动在代码中写入电子邮件地址时 例如
var recipients='xyz@mydomain.com,pqr@mydomain.com';
MailApp.sendEmail(recipients, subject, message, {attachments:
[attach]});
效果很好!
var emailTo = contacts.getRange(1, 1, numRows, 1).getValues();
MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
//or
MailApp.sendEmail(emailTo.toString(), subject, message, {attachments:
[attach]});
它不起作用!!!
我无法理解emailTo.toString()和'xyz @ mydomain.com,pqr @ mydomain.com'有何区别。
使用“ if”条件比较这两个条件及其返回的false。当我打印这两个时,它们看起来完全一样。
答案 0 :(得分:0)
为此只需设置一个测试表和脚本。
这是我的测试表示例:
这是脚本:
function stringMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('mail-test');
var range = sh.getDataRange();
var numRows = range.getValues().length;
var m1 = 'abc@mydomain.com,def@mydomain.com,ghi@mydomain.com';
var m2 = sh.getRange(1, 1, numRows, 1).getValues();
var m3 = m2.toString();
Logger.log(m1);
Logger.log(m2);
Logger.log(m2.toString());
Logger.log(m3);
if (m1 == m2.toString()) {
Logger.log('true');
}
if (m1 == m3) {
Logger.log('also true');
}
if (m3 == m2.toString()) {
Logger.log('still true');
}
}
如您所见,我运行了一些基本的if语句来检查它们是否相同,如果是,则编写一个日志条目。
从日志输出中:
[19-05-13 09:38:23:178 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:179 BST] [[abc@mydomain.com,def@mydomain.com], [ghi@mydomain.com]]
[19-05-13 09:38:23:179 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:180 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:180 BST] true
[19-05-13 09:38:23:181 BST] also true
[19-05-13 09:38:23:181 BST] still true
如您所见,变量m1
只是一串电子邮件地址,被认为与m2
相同,后者是getValues().toString()
中使用的MailApp.sendEmail()
。我还定义了m3
,而m2.toString()
只是单独定义的,以确保也可以使用。
在测试之后,我们可以确定很可能是电子表格中的值引起了错误,您应该仔细检查是否有多余的空格或奇怪的字符。
只要正确拉出getValues()
,然后使用toString()
进行转换,就不会有任何问题。