ในส่วนเสริมของ Google Workspace คุณสามารถสร้างวิดเจ็ตที่มีการดำเนินการที่ลิงก์ไว้ คุณสามารถใช้การดำเนินการเพื่อเขียนอีเมลฉบับร่างใหม่ โดยเลือกกรอกข้อมูลโดยใช้ข้อมูลใน UI ของส่วนเสริมหรือข้อมูลจากข้อความที่เปิดอยู่ เช่น คุณอาจมีปุ่มในUI ข้อความของส่วนเสริมซึ่งสร้างการตอบกลับข้อความที่เปิดอยู่ในปัจจุบันโดยป้อนข้อมูลล่วงหน้าจากส่วนเสริม
เมื่อทริกเกอร์การดำเนินการที่สร้างข้อความ Gmail จะเรียกใช้ฟังก์ชันการเรียกกลับเพื่อสร้างและแสดงฉบับร่าง จากนั้น 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 มีรหัสข้อความที่เปิดอยู่และข้อมูลส่วนเสริมอื่นๆ ที่คุณสามารถใช้เพื่อป้อนข้อมูลในฉบับร่างล่วงหน้า
คุณสามารถสร้างแบบร่างเป็นข้อความใหม่แบบสแตนด์อโลนหรือเป็นข้อความตอบกลับข้อความที่มีอยู่ก็ได้ ซึ่งควบคุมโดย ComposeEmailType
ที่เป็น enum ให้กับ 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();
}