ส่วนเสริม 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];
}