Gmail AppScript mailMessage.getFrom () для возврата электронной почты, а не имени - PullRequest
1 голос
/ 23 декабря 2019

Аналогично: Получение только адреса электронной почты для отображения при использовании message.getFrom () в JavaMail , но не удалось применить решение.

Попытка использования mailMessage.getFrom () в Google AppScript с Gmail.

Сценарий по умолчанию:

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 Ответ

1 голос
/ 03 января 2020

Похоже, что это ошибка!

Похоже, что при использовании метода getFrom() на карте появляется имя, но не адрес электронной почты, как вы описали, что противоречит тому, чтосодержится в GmailMessage.getFrom() документации .

Я позволил себе сообщить об этом поведении для вас в системе отслеживания проблем Google:

Вы можете нажать ☆ рядом с номером проблемы в левом верхнем углу этой страницы, что позволяет Google знать, что больше людейи, скорее всего, будет быстрее.

Обходной путь:

В то же время, поскольку метод getFrom() все еще работает в интерфейсе скрипта приложения, вы можете получитьадрес электронной почты из возвращаемой строки getFrom().

Если вы используете Logger.log(mailMessage.getFrom()), вы получите возврат в журнал вида:

Firstname Lastname <emailaddress@domain.com>

Итак, все, что вам нужносделать, это заменить:

var from = mailMessage.getFrom();

на:

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

Надеюсь, это вам пригодится!

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...