นอกเหนือจากการนำเสนอข้อมูลแล้ว ส่วนเสริมส่วนใหญ่กำหนดให้ผู้ใช้ป้อน เมื่อสร้างส่วนเสริมแบบการ์ด คุณสามารถใช้ วิดเจ็ตแบบอินเทอร์แอกทีฟ เช่น ปุ่ม รายการเมนูในแถบเครื่องมือ หรือช่องทำเครื่องหมายสำหรับขอข้อมูลที่ส่วนเสริมของคุณจากผู้ใช้ ต้องการหรือให้การควบคุมการโต้ตอบอื่นๆ
การเพิ่มการดำเนินการลงในวิดเจ็ต
โดยส่วนใหญ่ คุณทำให้วิดเจ็ตเป็นแบบอินเทอร์แอกทีฟได้โดยการเชื่อมโยงกับ การดำเนินการเฉพาะ และการใช้ลักษณะการทำงานที่จำเป็นใน Callback โปรดดูรายละเอียดในการดำเนินการของส่วนเสริม
ในกรณีส่วนใหญ่ คุณสามารถทำตามขั้นตอนทั่วไปนี้เพื่อกำหนดค่าวิดเจ็ตให้ ดำเนินการที่เฉพาะเจาะจงเมื่อเลือกหรืออัปเดต ดังนี้
- สร้างออบเจ็กต์
Action
ระบุฟังก์ชัน Callback ที่ควรเรียกใช้ รวมถึง พารามิเตอร์ที่จำเป็น - ลิงก์วิดเจ็ตกับ
Action
โดยโทรหา ฟังก์ชันเครื่องจัดการวิดเจ็ต - ใช้ฟังก์ชัน Callback ทำตามลักษณะการทำงานที่จำเป็น
ตัวอย่าง
ตัวอย่างต่อไปนี้ตั้งค่าปุ่มสำหรับแสดงการแจ้งเตือนของผู้ใช้
หลังจากที่คลิกแล้ว การคลิกจะทำให้ฟังก์ชัน Callback ของ notifyUser()
ทำงาน
ด้วยอาร์กิวเมนต์ที่ระบุข้อความแจ้งเตือน การแสดงผลบิลด์
ActionResponse
ผลการค้นหาจะแสดงการแจ้งเตือน
/**
* Build a simple card with a button that sends a notification.
* @return {Card}
*/
function buildSimpleCard() {
var buttonAction = CardService.newAction()
.setFunctionName('notifyUser')
.setParameters({'notifyText': 'Button clicked!'});
var button = CardService.newTextButton()
.setText('Notify')
.setOnClickAction(buttonAction);
// ...continue creating widgets, then create a Card object
// to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Constructs a
* notification action response and returns it.
* @param {Object} e the action event object
* @return {ActionResponse}
*/
function notifyUser(e) {
var parameters = e.parameters;
var notificationText = parameters['notifyText'];
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification()
.setText(notificationText))
.build(); // Don't forget to build the response!
}
ออกแบบการโต้ตอบที่มีประสิทธิภาพ
เมื่อออกแบบการ์ดอินเทอร์แอกทีฟ ให้คำนึงถึงสิ่งต่อไปนี้
วิดเจ็ตแบบอินเทอร์แอกทีฟมักจะต้องมีเมธอดเครื่องจัดการอย่างน้อย 1 วิธีเพื่อกำหนด พฤติกรรมของคุณ
ใช้วิดเจ็ต
setOpenLink()
เมื่อมี URL และต้องการเปิดในแท็บ ทำให้ไม่จำเป็นต้องกำหนด ออบเจ็กต์Action
และ Callback หากคุณจําเป็นต้องสร้าง URL ก่อน หรือใช้ URL อื่นเพิ่มเติม ก่อนเปิด URL ให้ระบุAction
และใช้setOnClickOpenLinkAction()
แทนเมื่อใช้
setOpenLink()
หรือsetOnClickOpenLinkAction()
ของตัวแฮนเดิลวิดเจ็ต คุณจะต้องระบุOpenLink
เพื่อกำหนด URL ที่จะเปิด คุณยังใช้ออบเจ็กต์นี้ได้ด้วย เพื่อระบุพฤติกรรมการเปิดและปิดโดยใช้OpenAs
และ enum ของOnClose
วิดเจ็ตมากกว่า 1 รายการจะใช้แบบเดียวกันได้
Action
อย่างไรก็ตาม คุณจำเป็นต้องกำหนดAction
ออบเจ็กต์หากต้องการ เพื่อระบุพารามิเตอร์ที่แตกต่างกันสำหรับฟังก์ชัน Callbackทำให้ฟังก์ชัน Callback ของคุณเรียบง่ายอยู่เสมอ หากต้องการให้ส่วนเสริมทำงานอย่างทันท่วงที บริการของบัตรจำกัดฟังก์ชัน Callback ไม่ให้อยู่ที่ไม่เกิน 30 วินาที เวลาดำเนินการ หากการดำเนินการใช้เวลานานกว่านั้น UI ส่วนเสริมอาจ ไม่อัปเดตการแสดงการ์ดอย่างถูกต้องตาม
Action
หากสถานะข้อมูลในแบ็กเอนด์ของบุคคลที่สามเปลี่ยนแปลงเนื่องจากผู้ใช้ การโต้ตอบกับ UI ของส่วนเสริม ขอแนะนำให้ตั้งค่าชุดส่วนเสริม "สถานะเปลี่ยนแปลง" บิตไปยัง
true
เพื่อให้แคชฝั่งไคลเอ็นต์ที่มีอยู่ ล้างแล้ว โปรดดูActionResponseBuilder.setStateChanged()
สำหรับรายละเอียดเพิ่มเติม