Включение редактора электронной почты html (аналог формы отправки gmail) в моем приложении GUI - PullRequest
0 голосов
/ 13 января 2020

Я создаю надстройку Google-Sheets, которая выполняет некоторую обработку данных и позволяет пользователю отправлять и редактировать электронную почту с окончательным результатом. Некоторые надстройки gsuite с функцией электронной почты, похоже, имеют точный клон черновой формы электронной почты из Gmail, поэтому мне интересно, можно ли включить черновую форму электронной почты gmail или эти надстройки просто реплицировали пользовательский интерфейс в их собственный код?

1 Ответ

0 голосов
/ 14 января 2020

Вы можете создать черновик пользовательского интерфейса Gmail windows, используя функцию GmailApp.createDraft [1] для пустого черновика, или вы можете получить конкретное сообщение или ветку c, на которую хотите ответить, и использовать createDraft функция для этого класса, эти функции упомянуты в документации [2].

Реализуя код и шаги из быстрого запуска дополнения Gmail [3] и составляя черновик руководства [2], я получил следующий код работая как надстройка с кнопкой, которая при нажатии откроет черновой ответ на открытое вами электронное письмо:

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

  var messageId = e.messageMetadata.messageId;
  var message = GmailApp.getMessageById(messageId);

  // Create a section
  var section = CardService.newCardSection()
  .setHeader("<font color=\"#1257e0\"><b>Create email draft reply</b></font>"); 

  // Action to trigger createReplyDraft funciton
  var composeAction = CardService.newAction()
  .setFunctionName('createReplyDraft');

  // Create button to trigger action when clicked
  var composeButton = CardService.newTextButton()
  .setText('Compose Reply')
  .setComposeAction(composeAction, CardService.ComposedEmailType.STANDALONE_DRAFT);

  // Add the button widget to the section.
  section.addWidget(composeButton);

  // Build the main card after adding the section.
  var card = CardService.newCardBuilder()
  .setHeader(CardService.newCardHeader()
             .setTitle('Create draft response')
             .setImageUrl('https://www.gstatic.com/images/icons/material/system/1x/label_googblue_48dp.png'))
  .addSection(section)
  .build();

  return [card];
}

/**
*  Creates a draft email (with an attachment and inline image)
*  as a reply to an existing message.
*  @param {Object} e data passed by the action.
*  @return {ComposeActionResponse}
*/
function createReplyDraft(e) {
  // Activate temporary Gmail add-on scopes, in this case to allow
  // a reply to be drafted.
  var accessToken = e.messageMetadata.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  // Creates a draft reply.
  var messageId = e.messageMetadata.messageId;
  var message = GmailApp.getMessageById(messageId);
  var draft = message.createDraftReply('', {
    htmlBody: "Kitten!"
  })
  // 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();
}

Убедитесь, что в манифесте есть необходимые области для функций, которые вы ' повторное использование.

[1] https://developers.google.com/apps-script/reference/gmail/gmail-app#createdraftrecipient - субъект, тело

[2] https://developers.google.com/gsuite/add-ons/gmail/compose#reply_drafts

[3 ] https://developers.google.com/gsuite/add-ons/gmail/quickstart

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