วิดเจ็ตการป้อนข้อความ ช่วยให้ส่วนเสริมอ่านและตอบสนองต่อข้อความที่ผู้ใช้ระบุได้ คุณ กำหนดค่าเครื่องมือเหล่านี้เพื่อให้คำแนะนำอัตโนมัติแก่ผู้ใช้สำหรับ ข้อความที่ป้อนได้
คำแนะนำที่แสดงอาจมาจากรายการสตริงแบบคงที่คุณระบุ หรือจะสร้างคำแนะนำจากบริบท เช่น ข้อความที่ผู้ใช้พิมพ์ลงในวิดเจ็ตแล้ว ก็ได้
การกำหนดค่าคำแนะนำ
การกำหนดค่าคำแนะนำสำหรับการป้อนข้อความต้องทำดังนี้
- สร้างรายการคำแนะนำโดยทำดังนี้
- การสร้างรายการแบบคงที่ และ/หรือ
- การกำหนดการดำเนินการด้วย ฟังก์ชันเรียกกลับที่สร้างรายการแบบไดนามิกจากบริบท
- แนบรายการคำแนะนำและ/หรือการดำเนินการกับวิดเจ็ตการป้อนข้อความ
หากคุณระบุทั้งรายการคำแนะนำแบบคงที่และการดำเนินการ UI ของแอปพลิเคชันจะใช้รายการแบบคงที่จนกว่าผู้ใช้จะเริ่มป้อนอักขระ จากนั้นระบบจะใช้ฟังก์ชันเรียกกลับและไม่สนใจรายการแบบคงที่
คำแนะนำแบบคงที่
หากต้องการแสดงรายการคำแนะนำแบบคงที่ คุณเพียงแค่ต้องทำดังนี้
- สร้าง
Suggestionsออบเจ็กต์ - เพิ่มคำแนะนำแบบคงที่แต่ละรายการโดยใช้
addSuggestion()หรือaddSuggestions() - แนบออบเจ็กต์
Suggestionsไปกับวิดเจ็ตโดยใช้TextInput.setSuggestions()
UI จะแสดงคำแนะนำแบบคงที่ตามลำดับที่เพิ่ม นอกจากนี้ UI ยังทำการจับคู่คำนำหน้าที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยอัตโนมัติ และกรอง รายการคำแนะนำขณะที่ผู้ใช้พิมพ์อักขระลงในวิดเจ็ต
การดำเนินการที่แนะนำ
หากไม่ได้ใช้รายการคำแนะนำแบบคงที่ คุณต้องกำหนดการดำเนินการ เพื่อสร้างคำแนะนำแบบไดนามิก โดยทำตามขั้นตอนต่อไปนี้
- สร้างออบเจ็กต์
Actionและเชื่อมโยงกับฟังก์ชันเรียกกลับ ที่คุณกำหนด - เรียกใช้ฟังก์ชัน
TextInput.setSuggestionsAction()ของวิดเจ็ต โดยระบุออบเจ็กต์Action - ใช้ฟังก์ชันเรียกกลับเพื่อสร้างรายการคำแนะนำและส่งคืนออบเจ็กต์
SuggestionsResponseที่สร้างขึ้น
UI จะเรียกฟังก์ชันเรียกกลับทุกครั้งที่ผู้ใช้พิมพ์อักขระลงใน ช่องป้อนข้อความ แต่จะเรียกก็ต่อเมื่อผู้ใช้หยุดพิมพ์ชั่วคราวเท่านั้น ฟังก์ชันเรียกกลับจะได้รับออบเจ็กต์เหตุการณ์ที่มีข้อมูลเกี่ยวกับวิดเจ็ตของ การ์ดที่เปิดอยู่ ดูรายละเอียดได้ที่ ออบเจ็กต์เหตุการณ์การดำเนินการ
ฟังก์ชันเรียกกลับต้องส่งคืนออบเจ็กต์ SuggestionsResponse ที่ถูกต้อง
ซึ่งมีรายการคำแนะนำที่จะแสดง UI จะแสดง
คำแนะนำตามลำดับที่เพิ่ม UI จะไม่กรองคำแนะนำในการโทรกลับโดยอัตโนมัติตามข้อมูลที่ผู้ใช้ป้อน ซึ่งต่างจากรายการแบบคงที่
หากต้องการกรองดังกล่าว คุณต้องอ่านค่าอินพุตข้อความ
จากออบเจ็กต์เหตุการณ์และกรองคำแนะนำขณะสร้างรายการ
ตัวอย่าง
ข้อมูลโค้ดส่วนเสริม Google Workspace ต่อไปนี้ แสดงวิธีตั้งค่าคำแนะนำ ในวิดเจ็ตการป้อนข้อความ 2 รายการที่แตกต่างกัน โดยรายการแรกมีรายการแบบคงที่และ รายการที่ 2 ใช้ฟังก์ชันเรียกกลับ
// Create an input with a static suggestion list.
var textInput1 = CardService.newTextInput()
.setFieldName('colorInput')
.setTitle('Color choice')
.setSuggestions(CardService.newSuggestions()
.addSuggestion('Red')
.addSuggestion('Yellow')
.addSuggestions(['Blue', 'Black', 'Green']));
// Create an input with a dynamic suggestion list.
var action = CardService.newAction()
.setFunctionName('refreshSuggestions');
var textInput2 = CardService.newTextInput()
.setFieldName('emailInput')
.setTitle('Email')
.setSuggestionsAction(action);
// ...
/**
* Build and return a suggestion response. In this case, the suggestions
* are a list of emails taken from the To: and CC: lists of the open
* message in Gmail, filtered by the text that the user has already
* entered. This method assumes the Google Workspace
* add-on extends Gmail; the add-on only calls this method for cards
* displayed when the user has entered a message context.
*
* @param {Object} e the event object containing data associated with
* this text input widget.
* @return {SuggestionsResponse}
*/
function refreshSuggestions(e) {
// Activate temporary Gmail scopes, in this case so that the
// open message metadata can be read.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var userInput = e && e.formInput['emailInput'].toLowerCase();
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
// Combine the comma-separated returned by these methods.
var addresses = message.getTo() + ',' + message.getCc();
// Filter the address list to those containing the text the user
// has already entered.
var suggestionList = [];
addresses.split(',').forEach(function(email) {
if (email.toLowerCase().indexOf(userInput) !== -1) {
suggestionList.push(email);
}
});
suggestionList.sort();
return CardService.newSuggestionsResponseBuilder()
.setSuggestions(CardService.newSuggestions()
.addSuggestions(suggestionList))
.build(); // Don't forget to build the response!
}
คำแนะนำและ OnChangeAction()
วิดเจ็ตอินพุตข้อความสามารถมีฟังก์ชันตัวแฮนเดิล
setOnChangeAction()
ที่กำหนดไว้ซึ่งจะทำงานทุกครั้งที่วิดเจ็ตสูญเสียโฟกัส
หากเปิดใช้ทั้งตัวแฮนเดิลนี้และคำแนะนำสำหรับการป้อนข้อความเดียวกัน
กฎต่อไปนี้จะกำหนดลักษณะการโต้ตอบของการป้อนข้อความ
setOnChangeAction()ตัวแฮนเดิลจะทำงานหลังจากเลือกคำแนะนำแล้ว- หากผู้ใช้กด Enter (หรือทำให้การป้อนข้อความสูญเสียโฟกัสด้วยวิธีอื่น)
โดยไม่ได้แก้ไขคำที่แนะนำที่เลือกไว้
setOnChangeAction()จะไม่ ทริกเกอร์อีก setOnChangeAction()จะทริกเกอร์อีกครั้งหากผู้ใช้แก้ไขคำที่เลือกจากคำแนะนำจนไม่ตรงกับคำแนะนำใดๆ ในรายการ- หากผู้ใช้ไม่เลือกคำแนะนำ
setOnChangeAction()จะทริกเกอร์ เมื่อข้อความที่ป้อนสูญเสียโฟกัส