Scrivere bozze dei messaggi

In un componente aggiuntivo di Google Workspace puoi creare widget che hanno azioni collegate. Puoi utilizzare un'azione per scrivere nuove bozze di email, inserendole facoltativamente utilizzando le informazioni inserite nell'UI del componente aggiuntivo o quelle di un messaggio aperto. Ad esempio, è possibile inserire un pulsante nell'interfaccia utente dei messaggi del componente aggiuntivo che crea una risposta al messaggio attualmente aperto precompilato con le informazioni del componente aggiuntivo.

Quando viene attivata un'azione che crea messaggi, Gmail esegue una funzione di callback per creare e restituire la bozza. Gmail visualizza quindi la bozza nell'interfaccia utente in una finestra di scrittura standard, che l'utente può modificare e inviare in base alle esigenze.

Configurare un'azione per creare una bozza di messaggio

Per configurare un widget per avviare un'azione di creazione della bozza quando è selezionato, devi:

  1. Assicurati che il tuo manifest include l'ambito action.compose:

    https://www.googleapis.com/auth/gmail.addons.current.action.compose

    In alternativa, puoi utilizzare un ambito più permissivo, ma devi farlo solo se tale ambito è assolutamente necessario.

  2. Creare un oggetto Action e associarlo a una funzione di callback che definisci.

  3. Chiama la funzione di gestione dei widget di setComposeAction() del widget, fornendogli l'oggetto Action e specificando ComposeEmailType.

  4. Implementare la funzione di callback che esegue l'azione di creazione della bozza. A questa funzione viene assegnato un oggetto evento come argomento. La funzione di callback deve effettuare le seguenti operazioni:

    1. Creare un oggetto GmailDraft.
    2. Crea un oggetto ComposeActionResponse utilizzando la classe ComposeActionResponseBuilder e l'oggetto GmailDraft.
    3. Restituire la build ComposeActionResponse.

Puoi precompilare la GmailDraft che crei nella funzione di callback con i destinatari, un oggetto, un corpo del messaggio e gli allegati. Per compilare la bozza, i dati possono provenire da qualsiasi origine, ma in genere derivano dalle informazioni fornite al componente aggiuntivo stesso, dalle informazioni contenute nel messaggio aperto o dalle informazioni raccolte da un servizio di terze parti. L'oggetto evento passato alla funzione di callback contiene l'ID messaggio aperto e altre informazioni aggiuntive che puoi utilizzare per precompilare la bozza.

Puoi creare la bozza come nuovo messaggio autonomo o risposta a un messaggio esistente. Ciò viene controllato dall'enum ComposeEmailType assegnato a setComposeAction(). Puoi creare bozze di risposte come risposte singole o messaggi di risposta.

Bozze autonome

Una bozza autonoma inizia un nuovo thread e non è una risposta a un messaggio esistente. Puoi creare una bozza autonoma con una delle seguenti funzioni del servizio Gmail:

Bozze delle risposte

Una bozza di risposta fa parte di un thread di messaggi esistente. Le bozze delle risposte sono risposte singole inviate solo al mittente di un messaggio o bozze di risposta che vengono inviate a tutti coloro che hanno ricevuto il messaggio. Puoi creare una bozza di risposta con una di queste funzioni del servizio Gmail:

Esempio

Il seguente snippet di codice mostra come assegnare un'azione che crea una bozza di risposta a un pulsante.

  var composeAction = CardService.newAction()
      .setFunctionName('createReplyDraft');
  var composeButton = CardService.newTextButton()
      .setText('Compose Reply')
      .setComposeAction(
          composeAction,
          CardService.ComposedEmailType.REPLY_AS_DRAFT);

  // ...

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

    // Creates a draft reply.
    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var draft = message.createDraftReply('',
        {
            htmlBody: "Kitten! <img src='cid:kitten'/>",
            attachments: [
              UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
                  .getBlob()
            ],
            inlineImages: {
              "kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
                           .getBlob()
            }
        }
    );

    // 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();
  }