Di Add-on Google Workspace, Anda dapat membuat widget yang telah menautkan tindakan. Anda dapat menggunakan tindakan untuk menulis draf email baru, dan secara opsional mengisinya menggunakan informasi yang dimasukkan ke dalam UI add-on atau informasi dari pesan yang terbuka. Misalnya, Anda dapat memiliki tombol di UI pesan add-on yang membuat balasan untuk pesan yang sedang dibuka dan telah diisi sebelumnya dengan informasi dari add-on.
Saat tindakan yang membangun pesan dipicu, Gmail akan menjalankan callback fungsi untuk membuat dan mengembalikan draf. Gmail kemudian menampilkan draf itu di UI di jendela tulis email standar, yang kemudian dapat diedit dan dikirim pengguna secara permanen sesuai kebutuhan.
Mengonfigurasi tindakan untuk membuat pesan draf
Untuk mengonfigurasi widget guna memulai tindakan pembuatan draf saat dipilih, Anda harus lakukan hal berikut:
Pastikan manifes Anda mencakup Cakupan
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
Anda dapat menggunakan cakupan yang lebih permisif, tetapi sebaiknya hanya jika ruang lingkup itu benar-benar diperlukan.
Membuat objek
Action
dan mengaitkannya dengan fungsi callback yang Anda tentukan.Panggil
setComposeAction()
widget fungsi pengendali widget, dengan memberikanAction
dan menentukanComposeEmailType
.Implementasikan fungsi callback yang menjalankan tindakan pembuatan draf. Ini diberi objek peristiwa sebagai argumen. Fungsi callback harus melakukan hal berikut:
- Membuat
GmailDraft
. - Membuat
ComposeActionResponse
menggunakanComposeActionResponseBuilder
danGmailDraft
. - Tampilkan
ComposeActionResponse
yang dibangun.
- Membuat
Anda dapat mengisi otomatis GmailDraft
yang Anda buat 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 disediakan ke add-on itu sendiri, informasi dalam pesan yang terbuka, atau
informasi yang dikumpulkan dari
layanan pihak ketiga. Tujuan
objek peristiwa
yang diteruskan ke fungsi callback berisi ID pesan yang terbuka dan add-on lainnya
yang dapat Anda gunakan untuk mengisi otomatis draf.
Anda dapat membuat draf sebagai pesan mandiri baru atau balasan ke
pesan yang sudah ada. Hal ini dikontrol oleh
ComposeEmailType
enum yang diberikan ke
setComposeAction()
.
Anda dapat membuat draf balasan sebagai balasan tunggal atau 'balas semua' membuat pesan teks.
Draf mandiri
Draf mandiri memulai rangkaian pesan baru dan bukan balasan untuk rangkaian pesan yang sudah ada untuk membuat pesan email baru. Anda dapat membuat draf mandiri dengan salah satu Fungsi layanan Gmail:
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 balasan tunggal yang hanya dikirimkan ke pengirim pesan atau "balas ke semua" draf yang dikirimkan kepada semua orang yang menerima pesan tersebut. Anda dapat membuat membalas draf dengan salah satu layanan Gmail ini fungsi-fungsi:
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 balasan draf menjadi sebuah 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();
}