בתוסף ל-Google Workspace אפשר ליצור ווידג'טים עם פעולות מקושרות. אתם יכולים להשתמש בפעולה כדי לכתוב טיוטות חדשות של אימיילים, ואם רוצים, למלא אותן באמצעות מידע שהוזן בממשק המשתמש של התוסף או מידע מהודעה פתוחה. לדוגמה, אפשר להוסיף לחצן לממשק המשתמש של ההודעות בתוסף, שיצור תשובה להודעה שנפתחה כרגע, עם מידע מהתוסף שיוזן מראש.
כשמופעלת פעולה שיוצרת הודעות, Gmail מפעיל פונקציית קריאה חוזרת כדי ליצור את הטיוטה ולהחזיר אותה. אחרי כן, Gmail מציג את הטיוטה בממשק המשתמש שלו בחלון כתיבת אימייל רגיל, והמשתמש יכול לערוך אותה ולשלוח אותה לפי הצורך.
הגדרת פעולה ליצירת טיוטה של הודעה
כדי להגדיר ווידג'ט שיפעיל פעולה של יצירת טיוטה כשבוחרים אותו, צריך לבצע את הפעולות הבאות:
מוודאים שהמניפסט כולל את היקף ההרשאות
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
אפשר להשתמש בהיקף פחות מגביל, אבל רק אם ההיקף הזה נחוץ לחלוטין.
יוצרים אובייקט
Action
ומשייכים אותו לפונקציית קריאה חוזרת שאתם מגדירים.קוראים לפונקציית
setComposeAction()
handler של הווידג'ט, ומספקים לה את האובייקטAction
ומציינים אתComposeEmailType
.מטמיעים את פונקציית הקריאה החוזרת שמבצעת את פעולת בניית הטיוטה. הפונקציה הזו מקבלת אובייקט אירוע כארגומנט. פונקציית הקריאה החוזרת צריכה לבצע את הפעולות הבאות:
- יוצרים אובייקט
GmailDraft
. - יוצרים אובייקט
ComposeActionResponse
באמצעות המחלקהComposeActionResponseBuilder
והאובייקטGmailDraft
. - מחזירים את
ComposeActionResponse
שנבנה.
- יוצרים אובייקט
אפשר למלא מראש את GmailDraft
שיוצרים בפונקציית הקריאה החוזרת עם נמענים, נושא, תוכן ההודעה וקבצים מצורפים. כדי למלא את הטיוטה, הנתונים יכולים להגיע מכל מקור, אבל בדרך כלל הם נגזרים ממידע שסופק לתוסף עצמו, ממידע בהודעה הפתוחה או ממידע שנאסף משירות צד שלישי. אובייקט האירוע שמועבר לפונקציית הקריאה החוזרת מכיל את מזהה ההודעה הפתוחה ומידע נוסף על התוסף שאפשר להשתמש בו כדי למלא מראש את הטיוטה.
אתם יכולים ליצור את הטיוטה כהודעה עצמאית חדשה או כתשובה להודעה קיימת. הערך הזה נקבע על ידי ה-enum 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();
}