ทริกเกอร์ที่ติดตั้งได้

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

ข้อจำกัด

แม้ว่าทริกเกอร์ที่ติดตั้งได้จะมีความยืดหยุ่นมากกว่าทริกเกอร์ทั่วไป แต่ทริกเกอร์ยังมีข้อจํากัดหลายรายการดังนี้

  • โดยจะไม่ทํางานหากเปิดไฟล์ในโหมดอ่านอย่างเดียว (ดูหรือแสดงความคิดเห็น) สําหรับสคริปต์แบบสแตนด์อโลน ผู้ใช้ต้องมีสิทธิ์ดูไฟล์เป็นอย่างน้อยเพื่อให้ทริกเกอร์ทํางานได้อย่างถูกต้อง
  • การเรียกใช้สคริปต์และคําขอ API ไม่ทําให้ทริกเกอร์ทํางาน เช่น การเรียก FormResponse.submit() เพื่อส่งการตอบกลับใหม่ไม่ทําให้ทริกเกอร์การส่งแบบฟอร์มทํางาน

  • ทริกเกอร์ที่ติดตั้งได้จะทํางานภายใต้บัญชีของผู้ที่สร้างเสมอ เช่น หากคุณสร้างทริกเกอร์แบบเปิดที่ติดตั้งได้ ทริกเกอร์นั้นจะทํางานเมื่อเพื่อนร่วมงานเปิดเอกสาร (หากเพื่อนร่วมงานมีสิทธิ์แก้ไข) แต่ทํางานเป็นบัญชีของคุณ ซึ่งหมายความว่าหากคุณสร้างทริกเกอร์ให้ส่งอีเมลเมื่อเปิดเอกสาร ระบบจะส่งอีเมลจากบัญชีของคุณเสมอ และไม่จําเป็นต้องเป็นบัญชีที่เปิดเอกสาร อย่างไรก็ตาม คุณจะสร้างทริกเกอร์แบบติดตั้งได้สําหรับแต่ละบัญชีได้ ซึ่งจะส่งผลให้มีการส่งอีเมลเดียวจากแต่ละบัญชี

  • บัญชีหนึ่งๆ จะไม่เห็นทริกเกอร์ที่ติดตั้งจากบัญชีที่ 2 แม้ว่าบัญชีแรกจะยังเปิดใช้งานทริกเกอร์เหล่านั้นได้อยู่

  • ทริกเกอร์ที่ติดตั้งได้จะขึ้นอยู่กับขีดจํากัดโควต้าของทริกเกอร์ Apps Script

ทริกเกอร์ที่ขับเคลื่อนด้วยเวลา

ทริกเกอร์ที่ขับเคลื่อนด้วยเวลา (หรือที่เรียกว่าทริกเกอร์นาฬิกา) คล้ายกับงาน Cron ใน Unix ทริกเกอร์ตามเวลาช่วยให้สคริปต์ทํางานในเวลาใดเวลาหนึ่งหรือเป็นระยะๆ ได้บ่อยพอๆ กับแต่ละนาทีหรือไม่บ่อยครั้งละครั้ง (โปรดทราบว่าส่วนเสริมสามารถใช้ทริกเกอร์ที่ขับเคลื่อนด้วยเวลาไม่เกิน 1 ครั้งต่อชั่วโมง) เวลาอาจแบบสุ่มเล็กน้อย เช่น หากคุณสร้างทริกเกอร์ที่เกิดซ้ํา 9:00 น. Apps Script จะเลือกเวลาระหว่าง 09:00 - 10:00 น. รวมถึงให้เวลานั้นสอดคล้องกันในแต่ละวันเพื่อให้ผ่านไป 24 ชั่วโมงก่อนที่ทริกเกอร์จะเริ่มทํางานอีกครั้ง

ทริกเกอร์ที่ขับเคลื่อนด้วยเหตุการณ์

ทริกเกอร์ที่ขับเคลื่อนโดยเหตุการณ์ที่ติดตั้งได้มีแนวคิดคล้ายกับทริกเกอร์แบบง่าย เช่น onOpen() แต่สามารถตอบสนองต่อเหตุการณ์เพิ่มเติม แต่มีลักษณะการทํางานที่แตกต่างออกไป

เช่น ทริกเกอร์เปิดที่ติดตั้งได้สําหรับ Google ชีตจะเปิดใช้งานเมื่อใดก็ตามที่ผู้ใช้ที่มีสิทธิ์แก้ไขเปิดสเปรดชีต เช่นเดียวกับทริกเกอร์ onOpen() แบบง่าย แต่เวอร์ชันที่ติดตั้งได้จะเรียกใช้บริการที่ต้องมีการให้สิทธิ์ได้ เวอร์ชันที่ติดตั้งได้จะทํางานร่วมกับการให้สิทธิ์ของผู้ใช้ที่สร้างทริกเกอร์ แม้ว่าผู้ใช้คนอื่นที่มีสิทธิ์แก้ไขจะเปิดสเปรดชีตก็ตาม

ทริกเกอร์ที่ติดตั้งได้หลายแอปพลิเคชันสําหรับ Google Workspace แอปพลิเคชัน ได้แก่

  • ทริกเกอร์เปิดที่ติดตั้งได้จะทํางานเมื่อผู้ใช้เปิดสเปรดชีต เอกสาร หรือแบบฟอร์มที่มีสิทธิ์แก้ไข
  • ทริกเกอร์แก้ไขที่ติดตั้งได้จะทํางานเมื่อผู้ใช้แก้ไขค่าในสเปรดชีต
  • ทริกเกอร์การเปลี่ยนแปลงที่ติดตั้งได้จะทํางานเมื่อผู้ใช้แก้ไขโครงสร้างของสเปรดชีตเอง เช่น ด้วยการเพิ่มแผ่นงานใหม่หรือนําคอลัมน์ออก
  • ทริกเกอร์การส่งแบบฟอร์มที่ติดตั้งได้จะทํางานเมื่อผู้ใช้ตอบกลับแบบฟอร์ม ทริกเกอร์การส่งแบบฟอร์มมี 2 เวอร์ชัน ได้แก่ เวอร์ชันสําหรับ Google ฟอร์มเอง และเวอร์ชันสําหรับชีต 1 แบบฟอร์มหากแบบฟอร์มส่งไปยังสเปรดชีต
  • ทริกเกอร์กิจกรรมในปฏิทินแบบติดตั้งได้จะทํางานเมื่อมีการอัปเดตกิจกรรมในปฏิทิน สร้าง แก้ไข หรือลบกิจกรรมในปฏิทินของผู้ใช้

คุณสามารถใช้ทริกเกอร์ที่ติดตั้งได้ในสคริปต์แบบสแตนด์อโลนและที่ผูกไว้ เช่น สคริปต์แบบสแตนด์อโลนสามารถสร้างทริกเกอร์ที่ติดตั้งได้สําหรับไฟล์ Google ชีตที่กําหนดเองด้วยการเรียก TriggerBuilder.forSpreadsheet(key) และส่งในรหัสของสเปรดชีต

การจัดการทริกเกอร์ด้วยตนเอง

วิธีสร้างทริกเกอร์แบบติดตั้งด้วยตนเองในเครื่องมือแก้ไขสคริปต์

  1. เปิดโปรเจ็กต์ Apps Script
  2. คลิกทริกเกอร์ ทางด้านซ้าย
  3. คลิกเพิ่มทริกเกอร์ที่ด้านล่างขวา
  4. เลือกและกําหนดค่าประเภททริกเกอร์ที่ต้องการสร้าง
  5. คลิกบันทึก

การจัดการทริกเกอร์แบบเป็นโปรแกรม

คุณยังสร้างและลบทริกเกอร์แบบเป็นโปรแกรมได้ด้วยบริการสคริปต์ เริ่มต้นด้วยการโทรหา ScriptApp.newTrigger(functionName) ซึ่งจะแสดงผล TriggerBuilder

ตัวอย่างต่อไปนี้แสดงวิธีสร้างทริกเกอร์ที่ใช้เวลา 2 รายการ รายการหนึ่งเริ่มทํางานเมื่อ 6 ชั่วโมง และรายการหนึ่งเริ่มทํางานทุกวันจันทร์เวลา 09:00 น. (ในเขตเวลาที่มีการตั้งค่าสคริปต์ไว้)

ทริกเกอร์/ทริกเกอร์.gs
/**
 * Creates two time-driven triggers.
 * @see https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers
 */
function createTimeDrivenTriggers() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .everyHours(6)
      .create();
  // Trigger every Monday at 09:00.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .onWeekDay(ScriptApp.WeekDay.MONDAY)
      .atHour(9)
      .create();
}

ตัวอย่างถัดไปนี้จะแสดงวิธีสร้างทริกเกอร์แบบเปิดที่ติดตั้งได้สําหรับสเปรดชีต โปรดทราบว่าสคริปต์สําหรับทริกเกอร์ที่ติดตั้งได้ไม่จําเป็นต้องเชื่อมโยงกับสเปรดชีต ซึ่งต่างจากทริกเกอร์ onOpen() แบบง่าย หากต้องการสร้างทริกเกอร์นี้จากสคริปต์แบบสแตนด์อโลน ให้แทนที่ SpreadsheetApp.getActive() ด้วยการเรียก SpreadsheetApp.openById(id)

ทริกเกอร์/ทริกเกอร์.gs
/**
 * Creates a trigger for when a spreadsheet opens.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function createSpreadsheetOpenTrigger() {
  const ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(ss)
      .onOpen()
      .create();
}

หากต้องการแก้ไขทริกเกอร์ที่ติดตั้งได้แบบเป็นโปรแกรม คุณต้องลบและสร้างทริกเกอร์ใหม่ หากคุณเคยเก็บรหัสของทริกเกอร์ไว้แล้ว ให้ลบรหัสนั้นด้วยการส่งรหัสเป็นอาร์กิวเมนต์ไปยังฟังก์ชันด้านล่าง

ทริกเกอร์/ทริกเกอร์.gs
/**
 * Deletes a trigger.
 * @param {string} triggerId The Trigger ID.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function deleteTrigger(triggerId) {
  // Loop over all triggers.
  const allTriggers = ScriptApp.getProjectTriggers();
  for (let index = 0; index < allTriggers.length; index++) {
    // If the current trigger is the correct one, delete it.
    if (allTriggers[index].getUniqueId() === triggerId) {
      ScriptApp.deleteTrigger(allTriggers[index]);
      break;
    }
  }
}

ข้อผิดพลาดในทริกเกอร์

เมื่อทริกเกอร์ที่ติดตั้งได้เริ่มทํางาน แต่ฟังก์ชันมีข้อยกเว้นหรือเรียกใช้ไม่สําเร็จ คุณจะเห็นข้อความแสดงข้อผิดพลาดบนหน้าจอ เพราะเมื่อทริกเกอร์ที่ทํางานตามเวลาหรือผู้ใช้รายอื่นเปิดใช้งานทริกเกอร์การส่งแบบฟอร์ม คุณอาจไม่ได้อยู่หน้าคอมพิวเตอร์

แต่ Apps Script จะส่งอีเมลดังนี้

From: apps-scripts-notifications@google.com
Subject: Summary of failures for Google Apps Script
Your script has recently failed to finish successfully.
A summary of the failure(s) is shown below.

โดยอีเมลจะมีลิงก์สําหรับปิดใช้งานหรือกําหนดค่าทริกเกอร์อีกครั้ง หากสคริปต์เชื่อมโยงกับไฟล์ Google ชีต เอกสาร หรือฟอร์ม อีเมลจะมีลิงก์ไปยังไฟล์นั้นด้วย ลิงก์เหล่านี้ช่วยให้คุณปิดใช้งานทริกเกอร์หรือแก้ไขสคริปต์เพื่อแก้ไขข้อบกพร่องได้

หากต้องการตรวจสอบทริกเกอร์ทั้งหมดที่เชื่อมโยงกับบัญชี Google และปิดทริกเกอร์ที่ไม่ต้องการแล้ว ให้ทําตามขั้นตอนต่อไปนี้

  1. ไปที่ script.google.com
  2. คลิกทริกเกอร์ของฉันทางด้านซ้าย
  3. หากต้องการลบทริกเกอร์ ที่ด้านขวาของทริกเกอร์ ให้คลิกเพิ่มเติม > ลบทริกเกอร์

ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริมที่ทริกเกอร์ส่วนเสริม