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

ทริกเกอร์ช่วยให้ 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.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 ฟอร์มจะไม่เกิดขึ้นเมื่อผู้ใช้เปิดแบบฟอร์มเพื่อตอบ แต่จะเกิดขึ้นเมื่อผู้แก้ไขเปิดแบบฟอร์มเพื่อแก้ไข