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

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