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

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

ดูข้อมูลเกี่ยวกับวิธีใช้ทริกเกอร์ในโปรเจ็กต์ส่วนเสริมของ Google Workspace ได้ที่ทริกเกอร์สำหรับส่วนเสริมของ Google Workspace

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

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

  • 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) ที่พบบ่อยที่สุดคือการเรียกใช้ onOpen(e) เพื่อเพิ่ม เมนูที่กำหนดเอง หลังจากติดตั้งส่วนเสริมแล้ว ไฟล์จะเปิดอยู่แล้ว ดังนั้น onOpen(e) จะไม่ทำงานด้วยตัวเองจนกว่าจะเปิดไฟล์อีกครั้ง โปรดทราบว่ามีข้อจำกัดบางอย่างเกี่ยวกับสิ่งที่ onInstall(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()}`);
}

onEdit() ทริกเกอร์จะจัดคิวเหตุการณ์ทริกเกอร์ได้สูงสุด 2 รายการเท่านั้น

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