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

ทริกเกอร์ช่วยให้ 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 ชีต, สไลด์, เอกสาร หรือฟอร์ม

ทริกเกอร์/ทริกเกอร์.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) จะไม่ทํางานเอง เว้นแต่ไฟล์จะเปิดอีกครั้ง

ทริกเกอร์/ทริกเกอร์.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) ด้านล่างจะตั้งค่าความคิดเห็นในเซลล์ที่บันทึกเวลาล่าสุดที่มีการแก้ไข

ทริกเกอร์/ทริกเกอร์.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) จะตั้งค่าพื้นหลังของเซลล์เป็นสีแดง

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