Taslak iletiler oluşturma

Google Workspace eklentilerinde, işlemlere bağlı widget'lar oluşturabilirsiniz. Yeni e-posta taslakları oluşturmak için, isteğe bağlı olarak eklenti kullanıcı arayüzüne girilen bilgileri veya açık bir iletideki bilgileri kullanarak yeni e-posta taslakları oluşturmak için bir işlem kullanabilirsiniz. Örneğin, eklentinizin mesaj kullanıcı arayüzünde, eklentideki bilgilerle önceden doldurulmuş olarak açık olan mesaja bir yanıt oluşturan bir düğmeniz olabilir.

Mesaj oluşturan bir işlem tetiklendiğinde Gmail, taslağı oluşturmak ve döndürmek için bir geri çağırma işlevi yürütür. Ardından Gmail bu taslağı kullanıcı arayüzünde standart bir e-posta oluşturma penceresinde görüntüler. Kullanıcı bu e-postayı gerektiğinde düzenleyip gönderebilir.

Taslak ileti oluşturmak için bir işlem yapılandırma

Bir widget'ı seçildiğinde taslak oluşturma işlemini başlatacak şekilde yapılandırmak için aşağıdakileri yapmanız gerekir:

  1. Manifest dosyanızın action.compose kapsamını içerdiğinden emin olun:

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

    Bunun yerine daha geniş kapsamlı bir kapsam kullanabilirsiniz ancak bu kapsamı yalnızca bu kapsam kesinlikle gerekliyse kullanmalısınız.

  2. Bir Action nesnesi oluşturun ve bunu tanımladığınız bir geri çağırma işleviyle ilişkilendirin.

  3. Widget'ın setComposeAction() widget işleyici işlevini çağırarak widget'a Action nesnesini sağlayın ve ComposeEmailType öğesini belirtin.

  4. Taslak oluşturma işlemini yürüten geri çağırma işlevini uygulayın. Bu işleve bağımsız değişken olarak bir etkinlik nesnesi verilir. Geri çağırma işlevi aşağıdakileri yapmalıdır:

    1. GmailDraft nesnesi oluşturun.
    2. ComposeActionResponseBuilder sınıfını ve GmailDraft nesnesini kullanarak bir ComposeActionResponse nesnesi oluşturun.
    3. Derlemeyi ComposeActionResponse geri verin.

Geri çağırma işlevinde oluşturduğunuz GmailDraft öğesini alıcılar, konu, ileti gövdesi ve eklerle önceden doldurabilirsiniz. Taslağı doldurmak için, veriler herhangi bir kaynaktan gelebilir. Ancak genellikle eklentinin kendisine sağlanan bilgilerden, açık iletideki bilgilerden veya üçüncü taraf bir hizmetten toplanan bilgilerden türetilir. Geri çağırma işlevine iletilen etkinlik nesnesi, açık mesaj kimliğini ve taslağı önceden doldurmak için kullanabileceğiniz diğer eklenti bilgilerini içerir.

Taslağı yeni bir mesaj veya mevcut bir mesajın yanıtı olarak oluşturabilirsiniz. Bu, setComposeAction() öğesine verilen ComposeEmailType sıralaması tarafından kontrol edilir. Yanıt taslaklarını tek yanıt veya "tümünü yanıtla" iletileri olarak oluşturabilirsiniz.

Bağımsız taslaklar

Bağımsız bir taslak, yeni bir ileti dizisi başlatır ve mevcut herhangi bir iletinin yanıtı değildir. Aşağıdaki Gmail hizmeti işlevlerinden biriyle bağımsız bir taslak oluşturabilirsiniz:

Yanıt taslakları

Yanıt taslağı, mevcut bir ileti dizisinin parçasıdır. Yanıt taslakları, yalnızca bir iletiyi gönderen kişiye gönderilen tek yanıtlar veya söz konusu iletiyi alan herkese gönderilen "tümünü yanıtla" taslaklarıdır. Şu Gmail hizmeti işlevlerinden birini kullanarak bir yanıt taslağı oluşturabilirsiniz:

Örnek

Aşağıdaki kod snippet'i, bir düğmeye yanıt taslağı oluşturan bir işlemin nasıl atanacağını gösterir.

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