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

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