Gmail AppScript mailMessage.getFrom()返回电子邮件,而不是姓名

时间:2019-12-23 03:27:13

标签: google-apps-script gmail-addons

类似于:Getting only email address to display when using message.getFrom() in JavaMail,但无法应用解决方案。

尝试在Google AppScript和Gmail上使用mailMessage.getFrom()

默认脚本:

function loadAddOn(event) {
  var accessToken = event.messageMetadata.accessToken;
  var messageId = event.messageMetadata.messageId;
  GmailApp.setCurrentMessageAccessToken(accessToken);
  var mailMessage = GmailApp.getMessageById(messageId);
  var from = mailMessage.getFrom();

  var openDocButton = CardService.newTextButton()
  .setText("open docs")
  .setOpenLink(
    CardService.newOpenLink().setUrl("https://developers.google.com/gmail/add-ons/"));

  var card = CardService.newCardBuilder()
  .setHeader(CardService.newCardHeader().setTitle("My First Gmail Addon"))
  .addSection(CardService.newCardSection()
              .addWidget(CardService.newTextParagraph().setText("The email is from: " + from))
              .addWidget(openDocButton))
  .build();

  return [card];
}

  

var from = mailMessage.getFrom();

这将返回发件人的姓名,而不是实际的电子邮件地址。尝试getFrom().getAddress()在上面提到的帖子中尝试我的运气,但显然没有用,getFrom()返回了一个字符串。

任何想法如何使用发件人的元数据访问数据或字典的数组,以便我自己提取电子邮件,姓名等?

1 个答案:

答案 0 :(得分:1)

这似乎是一个错误!

似乎在卡中使用getFrom()方法时,会显示名称,但没有显示您所描述的电子邮件地址,这与GmailMessage.getFrom() documentation中包含的内容相反。 / em>

我已自由通过Google的问题跟踪器为您报告此行为:

您可以点击此页面左上角发行号旁边的☆,让Google知道更多人正在遇到此问题,因此更有可能看到更快的速度。

解决方法:

与此同时,由于getFrom()方法仍可在Apps脚本界面中使用,因此您可以从getFrom()的返回字符串中获取电子邮件地址。

如果使用Logger.log(mailMessage.getFrom()),则会在日志中以以下形式返回:

Firstname Lastname <emailaddress@domain.com>

因此,您所需要做的就是替换:

var from = mailMessage.getFrom();

具有:

var from = mailMessage.getFrom().split("<")[1].split(">")[0];

希望对您有帮助!

参考文献: