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