Составление черновика письма из моего аддона gmail - PullRequest
0 голосов
/ 22 февраля 2019

Я использую пример здесь , чтобы направлять меня при написании кода для составления автономного черновика электронной почты с использованием значений ввода пользователя из моего аддона gmail.

Вот виджет кнопки, который долженсоздать черновик:

var submitButton = CardService.newTextButton()
    .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
    .setText('Create Draft')
    .setComposeAction(
        CardService.newAction().setFunctionName("createEmailDraft"),
        CardService.ComposedEmailType.STANDALONE_DRAFT
    );

И вот обратный вызов:

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

    var draft = GmailApp.createDraft(recipient, subject, body);
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
}

Я продолжаю сталкиваться со следующей ошибкой:

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

Мои области видимости в порядке (чрезмерно разрешающиеесли что-нибудь):

"oauthScopes": [
    "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/script.external_request"
],

Буду очень признателен за любую помощь в преодолении этой ошибки!

1 Ответ

0 голосов
/ 22 февраля 2019

Это немного глубже в документации , но вы должны использовать токен доступа в событии действия обратного вызова , чтобы авторизовать создание черновика:

function createEmailDraft(e) {
    var accessToken = e.messageMetadata.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    var recipient = e.formInput.recipient;
    var subject = e.formInput.subject;
    var body = e.formInput.body;

    var draft = GmailApp.createDraft(recipient, subject, body);
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...