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, bunları isteğe bağlı olarak eklenti kullanıcı arayüzüne girilen bilgiler veya açık bir iletideki bilgilerle doldurabilirsiniz. Örneğin, eklentinizin mesaj kullanıcı arayüzünde, şu anda açık olan mesaja eklentideki bilgilerle önceden doldurulmuş bir yanıt oluşturan bir düğme olabilir.
İ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ı daha sonra bu taslağı düzenleyip gerektiği gibi gönderebilir.
Taslak ileti oluşturma işlemini yapılandırma
Seçildiğinde taslak oluşturma işlemini başlatacak bir widget yapılandırmak için aşağıdakileri yapmanız gerekir:
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 izin verici bir kapsam kullanabilirsiniz ancak bunu yalnızca bu kapsam kesinlikle gerekliyse yapmalısınız.
Bir
Action
nesnesi oluşturun ve bunu tanımladığınız bir geri çağırma işleviyle ilişkilendirin.setComposeAction()
widget işleyici işlevini çağırın,Action
nesnesini sağlayın veComposeEmailType
'ı belirtin.Taslak oluşturma işlemini yürüten geri çağırma işlevini uygulayın. Bu işlev, bağımsız değişken olarak bir etkinlik nesnesi alır. Geri çağırma işlevi şunları yapmalıdır:
GmailDraft
nesnesi oluşturun.ComposeActionResponseBuilder
sınıfını veGmailDraft
nesnesini kullanarak birComposeActionResponse
nesnesi oluşturun.- Oluşturulan
ComposeActionResponse
öğesini döndürür.
Geri çağırma işlevinde oluşturduğunuz GmailDraft
iletiyi 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 hizmetinden toplanan bilgilerden elde edilir. Geri çağırma işlevine iletilen event object, 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()
öğesine verilen ComposeEmailType
numaralandırmasıyla kontrol edilir.
Yanıt taslaklarını tek yanıt veya "tümünü yanıtla" mesajı olarak oluşturabilirsiniz.
Bağımsız taslaklar
Bağımsız bir taslak, yeni bir ileti dizisi başlatır ve mevcut bir iletiye yanıt değildir. Aşağıdaki Gmail hizmeti işlevlerinden birini kullanarak bağımsız bir taslak oluşturabilirsiniz:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Yanıt taslakları
Yanıt taslağı, mevcut bir mesaj dizisinin parçasıdır. Yanıt taslakları, yalnızca iletinin gönderenine gönderilen tek yanıtlar veya iletiyi alan herkese gönderilen "tümünü yanıtla" taslaklarıdır. Şu Gmail hizmeti işlevlerinden birini kullanarak 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, yanıta taslağı oluşturan bir işlemin düğmeye 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();
}