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