【问题标题】:Script is reading email as a number instead of string脚本将电子邮件作为数字而不是字符串读取
【发布时间】:2021-04-27 23:23:48
【问题描述】:

我正在尝试遵循本指南(以前从未编程过):

https://www.groovypost.com/howto/google-sheets-send-email-based-on-cell-value/

但它一直给我错误:

异常:参数 (number[],String,String) 与 MailApp.sendEmail 的方法签名不匹配。 sendEmail@发送Email.gs:8

据我了解,这意味着电子邮件值是一个数字。但我不知道如何解决这个问题。

function sendEmail() {
// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Client Input").getRange("D2");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = 'Please go to your Issues Tracker for more information'; // Second column
var subject = ' Notification Action Required';
MailApp.sendEmail(emailAddress, subject, message);  
}

【问题讨论】:

  • 它只是告诉您您向收件人发送了一个数组而不是一个字符串。 emailRange.getValues() 返回一个二维数组
  • 告诉我们更多关于范围的信息,我们可以提出替代方案。minimal reproducible example
  • 如果您打算将其两个作为收件人数组,您可能会选择emailRange.getValues().flat().join(',');

标签: google-apps-script gmail


【解决方案1】:

由于emailRange.getValues() 返回一个二维数组,您需要通过其索引引用实际的字符串值,在这种情况下,[0][0] 因为数组只有一个值。

var emailAddress = emailRange.getValues()[0][0];

或者,如果您打算使用一个且仅一个电子邮件地址,只需使用:

var emailAddress = emailRange.getValue();

参考资料:

Class Range | getValues()

JavaScript Arrays

【讨论】:

  • 只需要一个值时使用var emailAddress = emailRange.getValue();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2015-06-19
  • 2018-07-30
相关资源
最近更新 更多