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