Надстройка Google App Script / Gmail: как отобразить окно с текстом и кнопками над Gmail? - PullRequest
3 голосов
/ 03 октября 2019

Я создал скрипт Google App для автоматического ответа на мои письма (своего рода умный помощник робота по работе с электронной почтой). Тем не менее, я хотел бы проверить каждый ответ, сделанный роботом перед отправкой.

Итак, я хотел бы иметь окно над Gmail, показывающее электронную почту пользователя и ответ робота, и две кнопки «отправить» «пропустить». Таким образом, я мог проверить ответ, подготовленный роботом, и либо отправить его, либо пропустить его (или, возможно, отредактировать).

Как отобразить окно с текстом, editText и кнопками над GMail из Google App Script?

Спасибо!

С уважением.

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Вы должны проверить надстройку Gmail: https://developers.google.com/gsuite/add-ons/gmail

Для первого запуска вы можете проверить кодовую метку в Google, она даст вам код для установки первой надстройки через 5 минут, затемВы можете адаптировать его к своим потребностям: https://codelabs.developers.google.com/codelabs/apps-script-intro/

Стефан

1 голос
/ 04 октября 2019

Простым решением было бы сделать так, чтобы робот сохранил электронную почту как «черновик». Таким образом, вы можете легко проверить электронную почту, прежде чем отправлять ее вручную.

Если вы по-прежнему заинтересованы в создании надстройки Gmail (которая может отображать исходное письмо, ответ и кнопки для отправки или редактирования),Вас может заинтересовать создание карточных интерфейсов . Они появятся справа от вашего веб-клиента Gmail и будут выглядеть следующим образом:

Gmail addon sample

Код, используемый для отображения такого интерфейса (с двумякнопки, одна из которых автоматически отправляет электронное письмо, а другая открывает редактор):

function buildAddOn(e) {
  // Activate temporary Gmail add-on scopes.
  var accessToken = e.messageMetadata.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  return buildDraftCard(getNextDraft());
}

function buildDraftCard(draft) {
  if (!draft) {
    var header = CardService.newCardHeader().setTitle('Nothing to see here');
    return CardService.newCardBuilder().setHeader(header).build();
  } else {
    var header = CardService.newCardHeader()
      .setTitle(draft.getMessage().getSubject());
    var section = CardService.newCardSection();
    var messageViewer = CardService.newTextParagraph()
      .setText(draft.getMessage().getBody());
    var sendButton = CardService.newTextButton()
      .setText('Send')
      .setOnClickAction(CardService.newAction()
                        .setFunctionName('sendMessage')
                        .setParameters({'draftId': draft.getId()})
                       );
    var editButton = CardService.newTextButton()
      .setText('Edit')
      .setOnClickAction(CardService.newAction()
                        .setFunctionName('editMessage')
                        .setParameters({'draftId': draft.getId()})
                       );
    var buttonSet = CardService.newButtonSet()
      .addButton(sendButton)
      .addButton(editButton);

    section.addWidget(messageViewer);
    section.addWidget(buttonSet)

    return CardService.newCardBuilder()
    .setHeader(header)
    .addSection(section)
    .build();
  }
}

function sendMessage(e) {
  GmailApp.getDraft(e.parameters.draftId).send();
  return CardService.newActionResponseBuilder().setNavigation(
    CardService.newNavigation()
    .popToRoot()
    .updateCard(buildDraftCard(getNextDraft()))
  ).build(); 
}

function editMessage(e) {
  var messageId = GmailApp.getDraft(e.parameters.draftId).getMessageId();
  var link = "https://mail.google.com/mail/#all/" + messageId;
  return CardService.newActionResponseBuilder().setOpenLink(
    CardService.newOpenLink()
    .setUrl(link)
    .setOnClose(CardService.OnClose.RELOAD_ADD_ON)
  ).build();
}

function getNextDraft() {
  return GmailApp.getDrafts().pop()
}

И конфигурация appsscript.json следующая:

{
  "oauthScopes": [ 
    "https://www.googleapis.com/auth/gmail.addons.execute",        
    "https://mail.google.com/"
  ],
  "gmail": {
    "name": "Gmail Add-on Draft Autoresponse UI",
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
    "contextualTriggers": [{
      "unconditional": {
      },
      "onTriggerFunction": "buildAddOn"
    }],
    "openLinkUrlPrefixes": [
      "https://mail.google.com/"
    ],
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4"
  }
}

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

...