ส่วนเสริมของ Google Workspace ที่ขยายการให้บริการของ Gmail จะช่วยมอบอินเทอร์เฟซ ให้ผู้ใช้ในขณะที่อ่านข้อความอยู่ วิธีนี้จะช่วยให้ส่วนเสริมของ Google Workspace ทำงานที่ตอบกลับเนื้อหาในข้อความได้โดยอัตโนมัติ เช่น การแสดง เรียกข้อมูล หรือการส่งข้อมูลเพิ่มเติมที่เกี่ยวข้องกับข้อความ
การเข้าถึง UI ข้อความส่วนเสริม
คุณดู UI ข้อความของส่วนเสริมได้ 2 วิธี วิธีแรกคือเปิดข้อความขณะที่ส่วนเสริมเปิดอยู่แล้ว (เช่น เมื่อดูหน้าแรกของส่วนเสริมในหน้าต่างกล่องจดหมาย Gmail) วิธีที่สองคือการเริ่มต้นส่วนเสริมขณะดูข้อความ
ทั้ง 2 กรณีจะทําให้ส่วนเสริมเรียกใช้ฟังก์ชันทริกเกอร์ตามบริบทที่เกี่ยวข้อง ตามที่กำหนดไว้ในไฟล์ Manifest ของส่วนเสริม นอกจากนี้ทริกเกอร์ยังจะทำงานหากผู้ใช้เปลี่ยนไปใช้ข้อความอื่นขณะที่ส่วนเสริมยังเปิดอยู่ ฟังก์ชันทริกเกอร์บริบทจะสร้าง UI ของข้อความสำหรับข้อความนั้น ซึ่ง Gmail จะแสดงให้ผู้ใช้เห็น
การสร้างส่วนเสริมข้อความ
คุณเพิ่มฟังก์ชันการทำงานของข้อความลงในส่วนเสริมได้โดยทําตามขั้นตอนทั่วไปต่อไปนี้
- เพิ่มช่องที่เหมาะสมลงในไฟล์ Manifest ของโปรเจ็กต์สคริปต์ส่วนเสริม ซึ่งรวมถึงขอบเขตที่จำเป็นสำหรับฟังก์ชันการทำงานของข้อความ อย่าลืมเพิ่มช่องทริกเกอร์แบบมีเงื่อนไขลงในไฟล์ Manifest โดยมีค่า
unconditional
เป็น{}
- ใช้ฟังก์ชันทริกเกอร์ตามบริบทที่สร้าง UI ข้อความเมื่อผู้ใช้เลือกส่วนเสริมในข้อความ
- ใช้ฟังก์ชันที่เกี่ยวข้องเพื่อสนองตอบการโต้ตอบใน UI ของผู้ใช้
ทริกเกอร์ตามบริบท
ส่วนเสริมของ Google Workspace สามารถกำหนดทริกเกอร์ตามบริบทในไฟล์ Manifest เพื่ออำนวยความสะดวกให้ผู้ใช้ในการอ่านข้อความ เมื่อผู้ใช้เปิดข้อความ Gmail (ที่เปิดส่วนเสริมอยู่) ที่ตรงตามหลักเกณฑ์ทริกเกอร์* ทริกเกอร์จะเริ่มทำงาน ทริกเกอร์ที่เริ่มทำงานจะเรียกใช้ฟังก์ชันทริกเกอร์ตามบริบทที่สร้างอินเทอร์เฟซผู้ใช้ของส่วนเสริมและส่งกลับมาเพื่อให้ Gmail แสดง ถึงจุดนี้ ผู้ใช้จะเริ่มโต้ตอบได้
ทริกเกอร์ตามบริบทจะกำหนดไว้ในไฟล์ Manifest โปรเจ็กต์ของส่วนเสริม
คำจำกัดความของทริกเกอร์จะบอก Gmail ว่าฟังก์ชันทริกเกอร์ใดจะเริ่มทำงานภายใต้เงื่อนไขใด เช่น ข้อมูลโค้ด Manifest นี้ตั้งค่าทริกเกอร์ที่ไม่มีเงื่อนไขซึ่งเรียกใช้ฟังก์ชันทริกเกอร์ onGmailMessageOpen()
เมื่อเปิดข้อความ ดังนี้
{ ... "addOns": { "common": { ... }, "gmail": { "contextualTriggers": [ { "unconditional": {}, "onTriggerFunction": "onGmailMessageOpen" } ], ... }, ... } ... }
ฟังก์ชันทริกเกอร์ตามบริบท
ทริกเกอร์ตามบริบททุกรายการต้องมีฟังก์ชันทริกเกอร์ที่สอดคล้องกันซึ่งสร้างอินเทอร์เฟซผู้ใช้ของส่วนเสริม คุณจะระบุฟังก์ชันนี้ได้ในช่อง onTriggerFunction
ของไฟล์ Manifest คุณใช้ฟังก์ชันนี้เพื่อยอมรับอาร์กิวเมนต์ของออบเจ็กต์เหตุการณ์การดำเนินการ และแสดงผลออบเจ็กต์ Card
รายการเดียวหรืออาร์เรย์ของออบเจ็กต์ Card
ก็ได้
เมื่อทริกเกอร์ตามบริบทเริ่มทำงานสำหรับข้อความ Gmail หนึ่ง ทริกเกอร์จะเรียกฟังก์ชันนี้และส่งต่อออบเจ็กต์เหตุการณ์การดำเนินการ ฟังก์ชันทริกเกอร์มักจะใช้รหัสข้อความที่ได้รับจากออบเจ็กต์เหตุการณ์นี้เพื่อรับข้อความและรายละเอียดอื่นๆ โดยใช้บริการ Gmail ของ Apps Script ตัวอย่างเช่น ฟังก์ชันทริกเกอร์อาจดึงเนื้อหาของข้อความโดยใช้ฟังก์ชันเหล่านี้
// Activate temporary Gmail scopes, in this case to allow
// the add-on to read message metadata and content.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
// Read message metadata and content. This requires the Gmail scope
// https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var subject = message.getSubject();
var sender = message.getFrom();
var body = message.getPlainBody();
var messageDate = message.getDate();
// Setting the access token with a gmail.addons.current.message.readonly
// scope also allows read access to the other messages in the thread.
var thread = message.getThread();
var threadMessages = thread.getMessages();
// Using this link can avoid the need to copy message or thread content
var threadLink = thread.getPermalink();
จากนั้นฟังก์ชันทริกเกอร์จะดำเนินการกับข้อมูลนี้โดยดึงข้อมูลที่ต้องการสำหรับอินเทอร์เฟซ ตัวอย่างเช่น ส่วนเสริมที่สรุปยอดขายจะเก็บรวบรวมตัวเลขยอดขายจากเนื้อหาข้อความและจัดระเบียบตัวเลขเพื่อแสดงในการ์ดได้
ฟังก์ชันทริกเกอร์ต้องสร้างและแสดงผลอาร์เรย์ของออบเจ็กต์ Card
ที่สร้างขึ้น ตัวอย่างเช่น ส่วนขยายต่อไปนี้จะสร้างส่วนเสริมที่มีการ์ดเดียวซึ่งมีเพียงรายการชื่อเรื่องและผู้ส่งข้อความ
function onGmailMessageOpen(e) {
// Activate temporary Gmail scopes, in this case to allow
// message metadata to be read.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var subject = message.getSubject();
var sender = message.getFrom();
// Create a card with a single card section and two widgets.
// Be sure to execute build() to finalize the card construction.
var exampleCard = CardService.newCardBuilder()
.setHeader(CardService.newCardHeader()
.setTitle('Example card'))
.addSection(CardService.newCardSection()
.addWidget(CardService.newKeyValue()
.setTopLabel('Subject')
.setContent(subject))
.addWidget(CardService.newKeyValue()
.setTopLabel('From')
.setContent(sender)))
.build(); // Don't forget to build the Card!
return [exampleCard];
}