Создание черновика письма из аддона gmail, расширяющего пользовательский интерфейс compose - PullRequest
0 голосов
/ 02 марта 2019

Я запускаю надстройку gmail со следующими областями действия:

https://mail.google.com/
https://www.googleapis.com/auth/gmail.addons.execute
https://www.googleapis.com/auth/gmail.addons.current.action.compose
https://www.googleapis.com/auth/gmail.addons.current.message.metadata
https://www.googleapis.com/auth/script.external_request

У меня есть кнопка и соответствующее событие compose action, которое должно считывать информацию о получателе, теме и теле изнекоторые поля ввода и вставьте эту информацию в пользовательский интерфейс compose.

Обратный вызов compose action выглядит следующим образом:

function autofillEmailDraft(e) {
  var recipient = e.formInput.recipient;
  var subject = e.formInput.subject;
  var body = e.formInput.body;

  GmailApp.setCurrentMessageAccessToken(e.messageMetadata.accessToken);
  var draft = GmailApp.createDraft(recipient, subject, body);

  // Return a built draft response. This causes Gmail to present a
  // compose window to the user, pre-filled with the content specified
  // above.
  return CardService.newComposeActionResponseBuilder()
    .setGmailDraft(draft).build();
}

При нажатии кнопки аддон вылетает со следующим сообщением об ошибке: TypeError: Cannot read property "accessToken" from undefined.

e.messageMetadata представляется неопределенным.Стоит ли искать токен доступа где-нибудь еще?

Простое удаление ошибочной строки

GmailApp.setCurrentMessageAccessToken(e.messageMetadata.accessToken);

не работает.Надстройка вылетает с другой ошибкой

Access denied: : Missing access token for authorization. Request: MailboxService.CreateDraft.

Обновление после комментариев:

Это код для виджета кнопки, который запускает действие создания:

var submitButton = CardService.newTextButton()
      .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
      .setText('Yes')
      .setComposeAction(
        CardService.newAction().setFunctionName('autofillEmailDraft'),
        CardService.ComposedEmailType.STANDALONE_DRAFT
      );

Это зарегистрированный объект 'e':

{
    formInput={body=Hello},
    parameters={},
    draftMetadata={
        toRecipients=[abcd@example.com],
        bccRecipients=[],
        ccRecipients=[]
    }
}

1 Ответ

0 голосов
/ 04 марта 2019

Как указывает открытый выпуск , заполнение полей получателя и темы черновика электронной почты из дополнения, расширяющего пользовательский интерфейс, в настоящее время не поддерживается.

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