בתוסף אפשר ליצור ווידג'טים שמקושרים לפעולות. אתם יכולים להשתמש בפעולה כדי לכתוב טיוטות חדשות של אימיילים, ואם רוצים, למלא אותן באמצעות מידע שהוזן בממשק המשתמש של התוסף או מידע מהודעה פתוחה. לדוגמה, אפשר להוסיף לחצן לממשק המשתמש של ההודעות בתוסף, שיצור תשובה להודעה שנפתחה כרגע עם מידע שמאוכלס מראש מהתוסף.
כשמופעלת פעולה שיוצרת הודעות, Gmail מפעיל פונקציית קריאה חוזרת כדי ליצור את הטיוטה ולהחזיר אותה. Gmail יציג את הטיוטה בממשק המשתמש שלו בחלון כתיבת אימייל רגיל, והמשתמש יוכל לערוך אותה ולשלוח אותה לפי הצורך.
הגדרת פעולה ליצירת טיוטה של הודעה
כדי להגדיר וידג'ט שיפעיל פעולה של יצירת טיוטה כשבוחרים בו, צריך לבצע את הפעולות הבאות:
מוודאים שהמניפסט כולל את ההיקף
action.compose:https://www.googleapis.com/auth/gmail.addons.current.action.composeאפשר להשתמש בהיקף סמכויות מתירני יותר, אבל רק אם ההיקף הזה נחוץ לחלוטין.
יוצרים אובייקט
Actionומשייכים אותו לפונקציית קריאה חוזרת שאתם מגדירים.קוראים לפונקציית ה-handler של הווידג'ט של הווידג'ט
setComposeAction, ומספקים לה את האובייקטActionומציינים אתComposeEmailType.מטמיעים את פונקציית הקריאה החוזרת שמבצעת את הפעולה של בניית הטיוטה. הפונקציה הזו מקבלת אובייקט אירוע כארגומנט. פונקציית הקריאה החוזרת צריכה לבצע את הפעולות הבאות:
- יוצרים אובייקט
GmailDraft. - יוצרים אובייקט
ComposeActionResponseבאמצעות המחלקהComposeActionResponseBuilderוהאובייקטGmailDraft. - החזרת
ComposeActionResponseשנבנה.
- יוצרים אובייקט
אפשר למלא מראש את GmailDraft שיוצרים בפונקציית הקריאה החוזרת עם נמענים, נושא, גוף ההודעה וקבצים מצורפים. כדי למלא את הטיוטה, הנתונים יכולים להגיע מכל מקור, אבל בדרך כלל הם נגזרים ממידע שסופק לתוסף עצמו, ממידע בהודעה הפתוחה או ממידע שנאסף משירות צד שלישי. אובייקט האירוע שמועבר לפונקציית הקריאה החוזרת מכיל את מזהה ההודעה הפתוחה ומידע נוסף על התוסף שאפשר להשתמש בו כדי למלא מראש את הטיוטה.
אפשר ליצור את הטיוטה כהודעה חדשה ועצמאית או כתשובה להודעה קיימת. ההגדרה הזו נקבעת על ידי
הספירה ComposeEmailType שמועברת אל
setComposeAction.
אתם יכולים ליצור טיוטות של תשובות כהודעות בודדות או כהודעות 'השב לכולם'.
טיוטות עצמאיות
טיוטה עצמאית מתחילה שרשור חדש ולא מהווה תשובה להודעה קיימת. אפשר ליצור טיוטה עצמאית באמצעות אחת מהפונקציות הבאות של שירות Gmail:
GmailApp.createDraft(recipient, subject, body)GmailApp.createDraft(recipient, subject, body, options)
טיוטות של תשובות
טיוטה של תשובה היא חלק משרשור הודעות קיים. טיוטות של תשובות הן תשובות בודדות שנשלחות רק לשולח ההודעה, או טיוטות של תשובות לכולם שנשלחות לכל מי שקיבל את ההודעה. אפשר ליצור טיוטה של תשובה באמצעות אחת מהפונקציות הבאות של שירות Gmail:
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)
דוגמה
בקטע הקוד הבא מוצג איך להקצות לחצן לפעולה שיוצרת טיוטה של תשובה.
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 previously
// specified.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}