ทริกเกอร์อย่างง่าย

ทริกเกอร์ช่วยให้ Apps Script เรียกใช้ฟังก์ชันโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง เช่น การเปิดเอกสาร ทริกเกอร์อย่างง่ายคือชุด ของฟังก์ชันที่สงวนไว้ซึ่งสร้างขึ้นใน Apps Script เช่น ฟังก์ชัน onOpen(e) ซึ่งจะทำงานเมื่อผู้ใช้เปิดไฟล์ Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม ทริกเกอร์ที่ติดตั้งได้มีความสามารถมากกว่า ทริกเกอร์อย่างง่าย แต่ต้องเปิดใช้งานก่อนจึงจะใช้ได้ สำหรับทริกเกอร์ทั้ง 2 ประเภท Apps Script จะส่งออบเจ็กต์เหตุการณ์ที่มีข้อมูลเกี่ยวกับบริบทที่เกิดเหตุการณ์ไปยังฟังก์ชันที่ทริกเกอร์

เริ่มต้นใช้งาน

หากต้องการใช้ทริกเกอร์อย่างง่าย เพียงสร้างฟังก์ชันที่ใช้ชื่อฟังก์ชันที่สงวนไว้ต่อไปนี้

  • onOpen(e) จะทำงานเมื่อผู้ใช้เปิดสเปรดชีต เอกสาร งานนำเสนอ หรือ แบบฟอร์มที่ผู้ใช้มีสิทธิ์แก้ไข
  • onInstall(e) จะทำงานเมื่อผู้ใช้ติดตั้งส่วนเสริมของเอดิเตอร์จากภายใน Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม
  • onEdit(e) จะทํางานเมื่อผู้ใช้เปลี่ยนค่าในสเปรดชีต
  • onSelectionChange(e) จะทำงานเมื่อผู้ใช้เปลี่ยนการเลือกในสเปรดชีต
  • doGet(e) จะทํางานเมื่อผู้ใช้เข้าชมเว็บแอป หรือโปรแกรมส่งคําขอ HTTP GET ไปยังเว็บแอป
  • doPost(e) จะทํางานเมื่อโปรแกรมส่งคําขอ HTTP POST ไปยังเว็บแอป

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

ข้อจำกัด

เนื่องจากทริกเกอร์แบบง่ายจะทำงานโดยอัตโนมัติโดยไม่ต้องขอสิทธิ์จากผู้ใช้ จึงมีข้อจำกัดหลายประการดังนี้

  • สคริปต์ต้องเชื่อมโยงกับไฟล์ Google ชีต, สไลด์, เอกสาร หรือฟอร์ม หรือเป็นส่วนเสริมที่ขยายแอปพลิเคชันใดแอปพลิเคชันหนึ่ง เหล่านั้น
  • โดยจะไม่ทำงานหากเปิดไฟล์ในโหมดอ่านอย่างเดียว (ดูหรือแสดงความคิดเห็น)
  • การดำเนินการสคริปต์และคำขอ API ไม่ทำให้ทริกเกอร์ทำงาน เช่น การเรียกใช้ Range.setValue() เพื่อแก้ไขเซลล์จะไม่ทำให้ทริกเกอร์ onEdit ของสเปรดชีตทำงาน
  • โดยจะเข้าถึงบริการที่ต้องมีการให้สิทธิ์ไม่ได้ เช่น ทริกเกอร์แบบง่ายจะส่งอีเมลไม่ได้เนื่องจากบริการ Gmail ต้องมีการให้สิทธิ์ แต่ทริกเกอร์แบบง่ายจะแปลวลีด้วยบริการภาษาซึ่งเป็นแบบไม่ระบุตัวตนได้
  • โดยจะแก้ไขไฟล์ที่เชื่อมโยงได้ แต่จะเข้าถึงไฟล์อื่นๆ ไม่ได้ เนื่องจากต้องมีการให้สิทธิ์
  • โดยอาจระบุตัวตนของผู้ใช้ปัจจุบันได้หรือไม่ก็ได้ ขึ้นอยู่กับชุดข้อจำกัดด้านความปลอดภัยที่ซับซ้อน
  • โดยจะแสดงได้ไม่เกิน 30 วินาที
  • ในบางกรณี ส่วนเสริมของเอดิเตอร์จะเรียกใช้ onOpen(e) และทริกเกอร์อย่างง่าย onEdit(e) ในโหมดที่ไม่มีการให้สิทธิ์ ซึ่งทำให้เกิดความซับซ้อนเพิ่มเติม ดูข้อมูลเพิ่มเติมได้ที่คู่มือวงจรการให้สิทธิ์ของส่วนเสริม
  • ทริกเกอร์แบบง่ายจะขึ้นอยู่กับขีดจำกัดโควต้าของทริกเกอร์ Apps Script

ข้อจํากัดเหล่านี้ไม่มีผลกับ doGet(e) หรือ doPost(e)

onOpen(e)

ทริกเกอร์ onOpen(e) จะทำงานโดยอัตโนมัติเมื่อผู้ใช้เปิดสเปรดชีต เอกสาร งานนำเสนอ หรือแบบฟอร์มที่ตนมีสิทธิ์แก้ไข (ทริกเกอร์จะไม่ทํางานเมื่อตอบแบบฟอร์ม แต่จะทํางานเมื่อเปิดแบบฟอร์มเพื่อ แก้ไขเท่านั้น) onOpen(e) มักใช้เพื่อเพิ่มรายการเมนูที่กำหนดเองใน Google ชีต, สไลด์, เอกสาร หรือฟอร์ม

triggers/triggers.gs
/**
 * The event handler triggered when opening the spreadsheet.
 * @param {Event} e The onOpen event.
 * @see https://developers.google.com/apps-script/guides/triggers#onopene
 */
function onOpen(e) {
  // Add a custom menu to the spreadsheet.
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
      .createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addToUi();
}

onInstall(e)

onInstall(e)ทริกเกอร์จะทำงานโดยอัตโนมัติเมื่อผู้ใช้ติดตั้งส่วนเสริมของเอดิเตอร์จากภายใน Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม ทริกเกอร์จะไม่ทำงานเมื่อผู้ใช้ ติดตั้งส่วนเสริมจากเว็บไซต์ Google Workspace Marketplace โปรดทราบว่าonInstall(e)มีข้อจำกัดบางอย่างเกี่ยวกับสิ่งที่ทำได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้สิทธิ์ การใช้งาน onInstall(e) ที่พบบ่อยที่สุดคือการเรียกใช้ onOpen(e) เพื่อเพิ่ม เมนูที่กำหนดเอง เนื่องจากเมื่อติดตั้งส่วนเสริมแล้ว ไฟล์จะเปิดอยู่ ดังนั้น onOpen(e) จะไม่ทำงานด้วยตัวเองจนกว่าจะเปิดไฟล์อีกครั้ง

triggers/triggers.gs
/**
 * The event handler triggered when installing the add-on.
 * @param {Event} e The onInstall event.
 * @see https://developers.google.com/apps-script/guides/triggers#oninstalle
 */
function onInstall(e) {
  onOpen(e);
}

onEdit(e)

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

triggers/triggers.gs
/**
 * The event handler triggered when editing the spreadsheet.
 * @param {Event} e The onEdit event.
 * @see https://developers.google.com/apps-script/guides/triggers#onedite
 */
function onEdit(e) {
  // Set a comment on the edited cell to indicate when it was changed.
  const range = e.range;
  range.setNote('Last modified: ' + new Date());
}

onSelectionChange(e)

onSelectionChange(e) ทริกเกอร์จะทำงานโดยอัตโนมัติเมื่อผู้ใช้เปลี่ยนการเลือกในสเปรดชีต หากต้องการเปิดใช้งานทริกเกอร์นี้ คุณต้องรีเฟรช สเปรดชีตเมื่อเพิ่มทริกเกอร์แล้วและทุกครั้งที่เปิดสเปรดชีต

หากการเลือกย้ายไปมาระหว่างหลายเซลล์ในเวลาอันสั้น ระบบอาจข้ามเหตุการณ์การเปลี่ยนแปลงการเลือกบางรายการเพื่อลดเวลาในการตอบสนอง ตัวอย่างเช่น หากมีการเปลี่ยนแปลงการเลือกหลายครั้งภายใน 2 วินาทีของการเปลี่ยนแปลงแต่ละครั้ง เฉพาะการเปลี่ยนแปลงการเลือกครั้งแรกและครั้งสุดท้ายเท่านั้นที่จะทําให้ทริกเกอร์ onSelectionChange(e)ทํางาน

ในตัวอย่างด้านล่าง หากเลือกเซลล์ว่าง ฟังก์ชัน onSelectionChange(e) จะตั้งค่า พื้นหลังของเซลล์เป็นสีแดง

triggers/triggers.gs
/**
 * The event handler triggered when the selection changes in the spreadsheet.
 * @param {Event} e The onSelectionChange event.
 * @see https://developers.google.com/apps-script/guides/triggers#onselectionchangee
 */
function onSelectionChange(e) {
  // Set background to red if a single empty cell is selected.
  const range = e.range;
  if (range.getNumRows() === 1 &&
    range.getNumColumns() === 1 &&
    range.getCell(1, 1).getValue() === '') {
    range.setBackground('red');
  }
}

doGet(e) และ doPost(e)

ทริกเกอร์ doGet(e) จะทำงานโดยอัตโนมัติเมื่อผู้ใช้เข้าชมเว็บแอปหรือโปรแกรมส่งคำขอ HTTP GET ไปยังเว็บแอป ส่วน doPost(e) จะทำงานเมื่อโปรแกรมส่งคำขอ HTTP POST ไปยังเว็บแอป คำอธิบายเกี่ยวกับทริกเกอร์เหล่านี้จะอยู่ในคำแนะนำสำหรับเว็บแอป บริการ HTML และบริการเนื้อหา โปรดทราบว่า doGet(e) และ doPost(e) จะไม่อยู่ภายใต้ข้อจำกัดที่ระบุไว้ข้างต้น

ประเภททริกเกอร์ที่ใช้ได้

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

กิจกรรม ทริกเกอร์อย่างง่าย ทริกเกอร์ที่ติดตั้งได้
เปิด
ชีต
สไลด์
ฟอร์ม*
เอกสาร

function onOpen(e)

ชีต
ฟอร์ม*
เอกสาร
แก้ไข
ชีต

function onEdit(e)

ชีต
การเปลี่ยนแปลงการเลือก
ชีต

function onSelectionChange(e)

ติดตั้ง
ชีต
สไลด์
ฟอร์ม
เอกสาร

function onInstall(e)

เปลี่ยน
ชีต
ส่งแบบฟอร์ม
ชีต
ฟอร์ม
อิงตามเวลา (นาฬิกา)
ชีต
สไลด์
ฟอร์ม
เอกสาร
แบบสแตนด์อโลน
ดาวน์โหลด
สมบูรณ์ในตัว

function doGet(e)

โพสต์
สมบูรณ์ในตัว

function doPost(e)

* เหตุการณ์การเปิดสำหรับ Google ฟอร์มจะไม่เกิดขึ้นเมื่อผู้ใช้เปิด แบบฟอร์มเพื่อตอบ แต่จะเกิดขึ้นเมื่อผู้แก้ไขเปิดแบบฟอร์มเพื่อแก้ไข