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

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