คำแนะนำที่เติมข้อความอัตโนมัติสำหรับการป้อนข้อความ

วิดเจ็ตการป้อนข้อความ ช่วยให้ส่วนเสริมอ่านและตอบสนองต่อข้อความที่ผู้ใช้ระบุได้ คุณ กำหนดค่าเครื่องมือเหล่านี้เพื่อให้คำแนะนำอัตโนมัติแก่ผู้ใช้สำหรับ ข้อความที่ป้อนได้

คำแนะนำที่แสดงอาจมาจากรายการสตริงแบบคงที่คุณระบุ หรือจะสร้างคำแนะนำจากบริบท เช่น ข้อความที่ผู้ใช้พิมพ์ลงในวิดเจ็ตแล้ว ก็ได้

การกำหนดค่าคำแนะนำ

การกำหนดค่าคำแนะนำสำหรับการป้อนข้อความต้องทำดังนี้

  • สร้างรายการคำแนะนำโดยทำดังนี้
    • การสร้างรายการแบบคงที่ และ/หรือ
    • การกำหนดการดำเนินการด้วย ฟังก์ชันเรียกกลับที่สร้างรายการแบบไดนามิกจากบริบท
  • แนบรายการคำแนะนำและ/หรือการดำเนินการกับวิดเจ็ตการป้อนข้อความ

หากคุณระบุทั้งรายการคำแนะนำแบบคงที่และการดำเนินการ UI ของแอปพลิเคชันจะใช้รายการแบบคงที่จนกว่าผู้ใช้จะเริ่มป้อนอักขระ จากนั้นระบบจะใช้ฟังก์ชันเรียกกลับและไม่สนใจรายการแบบคงที่

คำแนะนำแบบคงที่

หากต้องการแสดงรายการคำแนะนำแบบคงที่ คุณเพียงแค่ต้องทำดังนี้

  1. สร้างSuggestions ออบเจ็กต์
  2. เพิ่มคำแนะนำแบบคงที่แต่ละรายการโดยใช้ addSuggestion() หรือ addSuggestions()
  3. แนบออบเจ็กต์ Suggestions ไปกับวิดเจ็ตโดยใช้ TextInput.setSuggestions()

UI จะแสดงคำแนะนำแบบคงที่ตามลำดับที่เพิ่ม นอกจากนี้ UI ยังทำการจับคู่คำนำหน้าที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยอัตโนมัติ และกรอง รายการคำแนะนำขณะที่ผู้ใช้พิมพ์อักขระลงในวิดเจ็ต

การดำเนินการที่แนะนำ

หากไม่ได้ใช้รายการคำแนะนำแบบคงที่ คุณต้องกำหนดการดำเนินการ เพื่อสร้างคำแนะนำแบบไดนามิก โดยทำตามขั้นตอนต่อไปนี้

  1. สร้างออบเจ็กต์ Action และเชื่อมโยงกับฟังก์ชันเรียกกลับ ที่คุณกำหนด
  2. เรียกใช้ฟังก์ชัน TextInput.setSuggestionsAction() ของวิดเจ็ต โดยระบุออบเจ็กต์ Action
  3. ใช้ฟังก์ชันเรียกกลับเพื่อสร้างรายการคำแนะนำและส่งคืนออบเจ็กต์ 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() ที่กำหนดไว้ซึ่งจะทำงานทุกครั้งที่วิดเจ็ตสูญเสียโฟกัส หากเปิดใช้ทั้งตัวแฮนเดิลนี้และคำแนะนำสำหรับการป้อนข้อความเดียวกัน กฎต่อไปนี้จะกำหนดลักษณะการโต้ตอบของการป้อนข้อความ

  1. setOnChangeAction() ตัวแฮนเดิลจะทำงานหลังจากเลือกคำแนะนำแล้ว
  2. หากผู้ใช้กด Enter (หรือทำให้การป้อนข้อความสูญเสียโฟกัสด้วยวิธีอื่น) โดยไม่ได้แก้ไขคำที่แนะนำที่เลือกไว้ setOnChangeAction() จะไม่ ทริกเกอร์อีก
  3. setOnChangeAction() จะทริกเกอร์อีกครั้งหากผู้ใช้แก้ไขคำที่เลือกจากคำแนะนำจนไม่ตรงกับคำแนะนำใดๆ ในรายการ
  4. หากผู้ใช้ไม่เลือกคำแนะนำ setOnChangeAction() จะทริกเกอร์ เมื่อข้อความที่ป้อนสูญเสียโฟกัส