Di Add-on Google Workspace, Anda dapat membuat widget yang memiliki tindakan tertaut. Anda dapat menggunakan tindakan untuk menulis draf email baru, atau mengisinya dengan informasi yang dimasukkan ke UI add-on atau informasi dari pesan terbuka. Misalnya, Anda dapat memiliki tombol di UI pesan add-on yang membuat balasan untuk pesan yang saat ini dibuka dan diisi otomatis dengan informasi dari add-on.
Saat tindakan yang mem-build pesan dipicu, Gmail akan menjalankan fungsi callback untuk membuat dan menampilkan draf. Gmail kemudian menampilkan draf tersebut di UI-nya di jendela tulis email standar, yang kemudian dapat diedit dan dikirim pengguna sesuai kebutuhan.
Mengonfigurasi tindakan untuk mem-build draf pesan
Untuk mengonfigurasi widget agar memulai tindakan pembuatan draf saat dipilih, Anda harus melakukan langkah berikut:
Pastikan manifes Anda menyertakan cakupan
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Anda dapat menggunakan lebih banyak cakupan permisif, tetapi hanya boleh melakukannya jika cakupan tersebut benar-benar diperlukan.
Buat objek
Action
dan kaitkan dengan fungsi callback yang Anda tentukan.Panggil
setComposeAction()
fungsi pengendali widget widget, dengan memberikan objekAction
dan menentukanComposeEmailType
.Implementasikan fungsi callback yang menjalankan tindakan pembuatan draf. Fungsi ini diberi objek peristiwa sebagai argumen. Fungsi callback harus melakukan hal berikut:
- Buat objek
GmailDraft
. - Buat objek
ComposeActionResponse
menggunakan classComposeActionResponseBuilder
dan objekGmailDraft
. - Menampilkan
ComposeActionResponse
yang telah dibuat.
- Buat objek
Anda dapat mengisi otomatis GmailDraft
yang dibuat di fungsi callback dengan penerima, subjek, isi pesan, dan lampiran. Untuk mengisi draf,
data dapat berasal dari sumber apa pun, tetapi biasanya berasal dari informasi
yang diberikan ke add-on itu sendiri, informasi dalam pesan terbuka, atau
informasi yang dikumpulkan dari layanan pihak ketiga. Objek peristiwa yang diteruskan ke fungsi callback berisi ID pesan terbuka dan informasi add-on lainnya yang dapat Anda gunakan untuk mengisi otomatis draf.
Anda dapat membuat draf sebagai pesan mandiri baru atau balasan untuk pesan yang sudah ada. Hal ini dikontrol oleh enum
ComposeEmailType
yang diberikan ke
setComposeAction()
.
Anda dapat membuat draf balasan sebagai balasan tunggal atau pesan 'balas semua'.
Draf yang berdiri sendiri
Draf mandiri memulai rangkaian pesan baru dan bukan balasan untuk pesan yang sudah ada. Anda dapat membuat draf mandiri dengan salah satu fungsi layanan Gmail berikut:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Draf balasan
Draf balasan adalah bagian dari rangkaian pesan yang sudah ada. Draf balasan dapat berupa balasan tunggal yang hanya dikirim ke pengirim pesan atau draf "balas semua" yang dikirimkan kepada semua orang yang menerima pesan tersebut. Anda dapat membuat draf balasan dengan salah satu fungsi layanan Gmail berikut:
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)
Contoh
Cuplikan kode berikut menunjukkan cara menetapkan tindakan yang membuat draf balasan ke tombol.
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();
}