ในส่วนเสริมของ Google Workspace คุณสามารถสร้างวิดเจ็ตที่มีการลิงก์การดำเนินการ คุณสามารถใช้ การทำงานเพื่อเขียนอีเมลฉบับร่างใหม่ หรือเลือกกรอกโดยใช้ ข้อมูลที่ป้อนลงใน UI ของส่วนเสริม หรือข้อมูลจากข้อความที่เปิดอยู่ ตัวอย่างเช่น คุณมีปุ่มใน UI ข้อความของส่วนเสริม ที่จะสร้างการตอบกลับข้อความที่เปิดอยู่ในปัจจุบันด้วยข้อมูลจากส่วนเสริม
เมื่อมีการทริกเกอร์การดำเนินการที่สร้างข้อความ Gmail จะเรียกใช้ฟังก์ชันเรียกกลับเพื่อสร้างและแสดงผลฉบับร่าง จากนั้น Gmail จะแสดงข้อความร่างนั้นใน UI ในหน้าต่างเขียนอีเมลมาตรฐาน ซึ่งผู้ใช้จะแก้ไขและส่งได้ตามต้องการ
การกำหนดค่าการดำเนินการเพื่อสร้างข้อความร่าง
หากต้องการกำหนดค่าวิดเจ็ตให้เริ่มการทำงานสร้างแบบร่างเมื่อเลือก คุณต้องทำดังนี้
ตรวจสอบว่าไฟล์ Manifest มีขอบเขต
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
คุณอาจใช้ขอบเขตที่ผ่อนปรนมากขึ้นแทนได้ แต่ควรใช้เฉพาะขอบเขตนั้นจริงๆ เท่านั้น
สร้างออบเจ็กต์
Action
และเชื่อมโยงกับฟังก์ชันเรียกกลับที่คุณกำหนดเรียกใช้
setComposeAction()
ฟังก์ชันเครื่องจัดการวิดเจ็ตของวิดเจ็ต โดยระบุออบเจ็กต์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();
}