Google Workspace eklentilerinde, bağlı işlemler içeren widget'lar oluşturabilirsiniz. Yeni e-posta taslakları oluşturmak için bir işlem kullanabilir, isteğe bağlı olarak bunları eklenti kullanıcı arayüzüne girilen bilgileri veya açık bir iletideki bilgileri kullanarak doldurabilirsiniz. Örneğin, eklentinizin mesaj kullanıcı arayüzünde, şu anda açık olan mesaja eklentiden bilgilerle önceden doldurulmuş bir yanıt oluşturan bir düğme bulunabilir.
İleti oluşturan bir işlem tetiklendiğinde Gmail, taslağı oluşturup döndürmek için bir geri çağırma işlevi yürütür. Gmail, bu taslağı kullanıcı arayüzünde standart bir e-posta yazma penceresinde gösterir. Kullanıcı, bu taslağı gerektiği gibi 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:
Manifestinizin
action.compose
kapsamını içerdiğinden emin olun:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Bunun yerine daha izin verici bir kapsam kullanabilirsiniz ancak bunu yalnızca bu kapsam kesinlikle gerekliyse yapmanız gerekir.
Bir
Action
nesnesi oluşturun ve bu nesneyi tanımladığınız bir geri çağırma işleviyle ilişkilendirin.Widget'ın
setComposeAction()
widget işleyici işlevini çağırın. Bu işleveAction
nesnesi sağlayın veComposeEmailType
değerini belirtin.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:
- Bir
GmailDraft
nesnesi oluşturun. ComposeActionResponseBuilder
sınıfını veGmailDraft
nesnesini kullanarak birComposeActionResponse
nesnesi oluşturun.- Oluşturulan
ComposeActionResponse
dosyasını döndürün.
- Bir
Geri çağırma işlevinde oluşturduğunuz GmailDraft
öğesini alıcılarla, bir konuyla, bir ileti gövdesiyle ve eklerle önceden doldurabilirsiniz. Taslağı doldurmak için veriler herhangi bir kaynaktan gelebilir ancak genellikle eklentiye sağlanan bilgilerden, açık mesajdaki bilgilerden veya üçüncü taraf hizmetinden 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 bağımsız mesaj veya mevcut bir mesaja yanıt olarak oluşturabilirsiniz. Bu, setComposeAction()
değerine atanan ComposeEmailType
enum tarafından kontrol edilir.
Yanıt taslakları tek yanıt veya "tümünü yanıtla" mesajları olarak oluşturabilirsiniz.
Bağımsız taslaklar
Bağımsız taslaklar yeni bir ileti dizisi başlatır ve mevcut bir iletiye yanıt değildir. Aşağıdaki Gmail hizmeti işlevlerinden biriyle bağımsız bir taslak oluşturabilirsiniz:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Taslakları yanıtlama
Yanıt taslağı, mevcut bir mesaj dizisinin parçasıdır. Yanıt taslakları, yalnızca iletiyi gönderene gönderilen tek yanıtlar veya iletiyi alan herkese gönderilen "tümünü yanıtla" taslaklarıdır. Şu Gmail hizmeti işlevlerinden biriyle yanıt taslağı oluşturabilirsiniz:
GmailMessage.createDraftReply(body)
GmailMessage.createDraftReply(body, options)
GmailMessage.createDraftReplyAll(body)
GmailMessage.createDraftReplyAll(body, options)
GmailThread.createDraftReply(body)
GmailThread.createDraftReply(body, options)
GmailThread.createDraftReplyAll(body)
GmailThread.createDraftReplyAll(body, options)
Örnek
Aşağıdaki kod snippet'inde, bir düğmeye yanıt taslağı oluşturan bir işlemin nasıl atanacağı gösterilmektedir.
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();
}