ทริกเกอร์ Apps Script จะทำให้ฟังก์ชันสคริปต์ที่ระบุ (ฟังก์ชันทริกเกอร์) ทำงานเมื่อใดก็ตามที่เกิดเหตุการณ์ที่ระบุ มีเพียงบางเหตุการณ์เท่านั้นที่ทำให้ทริกเกอร์ทำงาน และแอปพลิเคชัน Google Workspace แต่ละรายการรองรับชุดเหตุการณ์ที่แตกต่างกัน
เมื่อทริกเกอร์เริ่มทำงาน ระบบจะสร้างออบเจ็กต์เหตุการณ์ โครงสร้าง JSON นี้ มีรายละเอียดเกี่ยวกับเหตุการณ์ที่เกิดขึ้น ระบบจะจัดระเบียบข้อมูลในโครงสร้างออบเจ็กต์เหตุการณ์ แตกต่างกันไปตามประเภททริกเกอร์
เมื่อสร้างออบเจ็กต์เหตุการณ์แล้ว Apps Script จะส่งออบเจ็กต์ดังกล่าวเป็นพารามิเตอร์ไปยัง
ฟังก์ชันทริกเกอร์ ฟังก์ชันทริกเกอร์คือฟังก์ชันเรียกกลับที่คุณต้อง
ใช้เองเพื่อดำเนินการที่เหมาะสมเพื่อตอบสนองต่อ
เหตุการณ์ เช่น ในส่วนเสริมของเอดิเตอร์ ระบบจะใช้ทริกเกอร์
เพื่อสร้างรายการเมนูส่วนเสริมเมื่อเปิดเอกสาร ในกรณีนี้ คุณ
จะใช้ฟังก์ชันทริกเกอร์ onOpen(e)
เพื่อสร้างรายการเมนูที่ส่วนเสริม
ต้องการได้ โดยอาจใช้ข้อมูลในออบเจ็กต์เหตุการณ์
หน้านี้มีหลักเกณฑ์เกี่ยวกับการใช้ทริกเกอร์ในโปรเจ็กต์ส่วนเสริมของ เอดิเตอร์
ประเภททริกเกอร์ของส่วนเสริมของเอดิเตอร์
คุณใช้ทริกเกอร์ทั่วไปส่วนใหญ่ที่มีให้ใช้งานในโปรเจ็กต์ Apps Script ในส่วนเสริมของเครื่องมือแก้ไขได้ ซึ่งรวมถึงทริกเกอร์อย่างง่าย และทริกเกอร์ที่ติดตั้งได้ส่วนใหญ่ ชุดประเภททริกเกอร์ที่ใช้ได้ ที่แน่นอนจะขึ้นอยู่กับแอปพลิเคชันที่กำลังขยาย
ตารางต่อไปนี้แสดงประเภททริกเกอร์แบบง่ายและทริกเกอร์ที่ติดตั้งได้ซึ่งส่วนเสริมของเอดิเตอร์ใช้ได้ และมีลิงก์ไปยังออบเจ็กต์เหตุการณ์ที่เกี่ยวข้อง
กิจกรรม | ออบเจ็กต์เหตุการณ์ | ทริกเกอร์อย่างง่าย | ทริกเกอร์ที่ติดตั้งได้ |
---|---|---|---|
เปิด ระบบจะเปิดไฟล์เครื่องมือแก้ไข |
ออบเจ็กต์เหตุการณ์ onOpen ของเอกสาร ออบเจ็กต์เหตุการณ์ onOpen ของฟอร์ม ออบเจ็กต์เหตุการณ์ onOpen ของชีต ออบเจ็กต์เหตุการณ์ onOpen ของสไลด์ |
![]() ![]() ![]() ![]()
|
![]() ![]() ![]() |
ติดตั้ง ติดตั้งส่วนเสริมแล้ว |
ออบเจ็กต์เหตุการณ์ onInstall |
![]() ![]() ![]() ![]()
|
|
แก้ไข มีการเปลี่ยนแปลงเนื้อหาของเซลล์สเปรดชีต |
ออบเจ็กต์เหตุการณ์ onEdit ของชีต |
![]()
|
![]() |
เปลี่ยน มีการแก้ไขหรือจัดรูปแบบเนื้อหาในชีต |
ออบเจ็กต์เหตุการณ์ onChange ของชีต |
![]() |
|
ส่งแบบฟอร์ม ส่ง Google ฟอร์ม |
ออบเจ็กต์เหตุการณ์การส่งแบบฟอร์มของฟอร์ม ออบเจ็กต์เหตุการณ์การส่งแบบฟอร์มของชีต |
![]() ![]() |
|
อิงตามเวลา (นาฬิกา) ทริกเกอร์จะเริ่มทำงานในเวลาหรือช่วงเวลาที่ระบุ |
ออบเจ็กต์เหตุการณ์ตามเวลา |
![]() ![]() ![]() ![]() |
* เหตุการณ์การเปิดสำหรับ Google ฟอร์มจะไม่เกิดขึ้นเมื่อผู้ใช้เปิด แบบฟอร์มเพื่อตอบ แต่จะเกิดขึ้นเมื่อผู้แก้ไขเปิดแบบฟอร์มเพื่อแก้ไข
ทริกเกอร์ที่เรียบง่ายในส่วนเสริม
ทริกเกอร์อย่างง่ายใช้ชุดชื่อฟังก์ชันที่สงวนไว้ ไม่สามารถใช้บริการที่ต้องมีการให้สิทธิ์ และจะเปิดใช้โดยอัตโนมัติเพื่อใช้งาน ในบางกรณี เหตุการณ์ทริกเกอร์อย่างง่ายจะ จัดการได้โดยใช้ทริกเกอร์ที่ติดตั้งได้แทน
คุณเพิ่มทริกเกอร์แบบง่ายลงในส่วนเสริมได้โดยการใช้ฟังก์ชัน ที่มีชื่อที่สงวนไว้ต่อไปนี้
onOpen(e)
จะทำงานเมื่อผู้ใช้เปิดเอกสาร สเปรดชีต หรือ งานนำเสนอonOpen(e)
ยังเรียกใช้ได้เมื่อเปิดแบบฟอร์มในเอดิเตอร์ (แต่จะเรียกใช้ไม่ได้เมื่อตอบแบบฟอร์ม) โดยจะทำงานก็ต่อเมื่อผู้ใช้มีสิทธิ์แก้ไขไฟล์ที่เป็นปัญหาเท่านั้น และมักใช้เพื่อสร้างรายการเมนูonInstall(e)
จะทํางานเมื่อผู้ใช้ติดตั้งส่วนเสริม โดยปกติแล้วonInstall(e)
จะใช้เพื่อเรียกonOpen(e)
เท่านั้น ซึ่งจะช่วยให้เมนูส่วนเสริมปรากฏขึ้น ทันทีหลังการติดตั้งโดยไม่ต้องให้ผู้ใช้รีเฟรชหน้าเว็บonEdit(e)
จะทํางานเมื่อผู้ใช้เปลี่ยนค่าเซลล์ในสเปรดชีต ทริกเกอร์นี้จะไม่ทำงานเพื่อตอบสนองต่อการย้ายเซลล์ การจัดรูปแบบ หรือ การเปลี่ยนแปลงอื่นๆ ที่ไม่เปลี่ยนแปลงค่าเซลล์
ข้อจำกัด
ทริกเกอร์แบบง่ายในส่วนเสริมจะอยู่ภายใต้ข้อจำกัดเดียวกันกับที่ควบคุมทริกเกอร์แบบง่ายในโปรเจ็กต์ Apps Script ประเภทอื่นๆ โปรดคํานึงถึงข้อจํากัดเหล่านี้เป็นพิเศษเมื่อออกแบบส่วนเสริม
- ทริกเกอร์อย่างง่ายจะไม่ทำงานหากเปิดไฟล์ในโหมดอ่านอย่างเดียว (ดูหรือแสดงความคิดเห็น) ลักษณะการทำงานนี้จะป้องกันไม่ให้ระบบแสดงเมนูส่วนเสริม
- ในบางกรณี ส่วนเสริมเครื่องมือแก้ไขจะเรียกใช้
onOpen(e)
และonEdit(e)
ทริกเกอร์แบบง่ายในโหมดที่ไม่มีการให้สิทธิ์ โหมดนี้ทำให้เกิดความซับซ้อนเพิ่มเติมตามที่ระบุไว้ในรูปแบบการให้สิทธิ์ส่วนเสริม - ทริกเกอร์แบบง่ายไม่สามารถใช้บริการหรือดำเนินการอื่นๆ ที่ต้องมีการให้สิทธิ์ ยกเว้นตามที่ระบุไว้ในรูปแบบการให้สิทธิ์ของส่วนเสริม
- ทริกเกอร์อย่างง่ายจะทำงานได้ไม่เกิน 30 วินาที โปรดระมัดระวังเพื่อลด ปริมาณการประมวลผลที่ทำในฟังก์ชันทริกเกอร์อย่างง่าย
- ทริกเกอร์แบบง่ายจะขึ้นอยู่กับขีดจำกัดโควต้าของทริกเกอร์ Apps Script
ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริม
ส่วนเสริมสามารถสร้างและแก้ไขทริกเกอร์ที่ติดตั้งได้โดยอัตโนมัติ
ด้วยบริการ Script
ของ Apps Script โดยคุณไม่สามารถสร้างทริกเกอร์ที่ติดตั้งได้ของส่วนเสริมด้วยตนเอง ทริกเกอร์ที่ติดตั้งได้จะใช้บริการที่ต้องมีการให้สิทธิ์ได้ ซึ่งต่างจากทริกเกอร์อย่างง่าย
ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริมจะไม่ส่งอีเมลข้อผิดพลาด ถึงผู้ใช้เมื่อพบข้อผิดพลาด เนื่องจากในกรณีส่วนใหญ่ ผู้ใช้จะแก้ปัญหาไม่ได้ ด้วยเหตุนี้ คุณจึงควรออกแบบส่วนเสริมให้ จัดการข้อผิดพลาดในนามของผู้ใช้ได้อย่างราบรื่นทุกครั้งที่ทำได้
ส่วนเสริมสามารถใช้ทริกเกอร์ที่ติดตั้งได้ต่อไปนี้
- ทริกเกอร์ที่ติดตั้งได้ของเปิดจะทำงานเมื่อผู้ใช้เปิดเอกสาร สเปรดชีต หรือเมื่อเปิดแบบฟอร์มในเครื่องมือแก้ไข (แต่จะไม่ทำงานเมื่อตอบ แบบฟอร์ม)
- ทริกเกอร์ที่ติดตั้งได้ของแก้ไขจะทํางานเมื่อผู้ใช้เปลี่ยนค่าเซลล์ในสเปรดชีต ทริกเกอร์นี้จะไม่ทํางานเพื่อตอบสนองต่อการจัดรูปแบบหรือการเปลี่ยนแปลงอื่นๆ ที่ไม่ได้เปลี่ยนแปลงค่าเซลล์
- ทริกเกอร์ที่ติดตั้งได้ของการเปลี่ยนแปลงจะทำงานเมื่อผู้ใช้ทำการเปลี่ยนแปลงในสเปรดชีต ซึ่งรวมถึงการแก้ไขการจัดรูปแบบและการแก้ไขสเปรดชีต เอง (เช่น การเพิ่มแถว)
ทริกเกอร์ที่ติดตั้งได้ของ Form-submit จะทำงานเมื่อมีการส่งคำตอบของ Google ฟอร์ม
ทริกเกอร์ที่อิงตามเวลา (เรียกอีกอย่างว่าทริกเกอร์นาฬิกา) จะทริกเกอร์ในเวลาที่เฉพาะเจาะจงหรือซ้ำๆ ใน ช่วงเวลาปกติ
การให้สิทธิ์ทริกเกอร์ที่ติดตั้งได้
โดยปกติแล้ว หากนักพัฒนาแอปอัปเดตส่วนเสริมให้ใช้บริการใหม่ที่ต้องมีการให้สิทธิ์เพิ่มเติม ระบบจะแจ้งให้ผู้ใช้ให้สิทธิ์ส่วนเสริมอีกครั้งในครั้งถัดไปที่ผู้ใช้ใช้ส่วนเสริม
อย่างไรก็ตาม ส่วนเสริมที่ใช้ทริกเกอร์จะพบปัญหาการให้สิทธิ์พิเศษ ลองนึกถึงส่วนเสริมที่ใช้ทริกเกอร์เพื่อตรวจสอบการส่งแบบฟอร์ม ผู้สร้างแบบฟอร์มอาจให้สิทธิ์ส่วนเสริมเป็นครั้งแรกที่ใช้ จากนั้นปล่อยให้ส่วนเสริมทำงานเป็นเวลาหลายเดือนหรือหลายปีโดยไม่ต้องเปิดแบบฟอร์มอีกเลย หากนักพัฒนาส่วนเสริมอัปเดตส่วนเสริมให้ใช้บริการใหม่ที่ต้องมีการให้สิทธิ์เพิ่มเติม ผู้สร้างแบบฟอร์มจะไม่เห็นกล่องโต้ตอบการให้สิทธิ์อีกครั้งเนื่องจากไม่ได้เปิดแบบฟอร์มอีก และส่วนเสริมจะหยุดทำงาน
ทริกเกอร์ในส่วนเสริมจะยังคงทำงานต่อไปแม้ว่าจะต้องมีการให้สิทธิ์อีกครั้ง ซึ่งต่างจากทริกเกอร์ในโปรเจ็กต์ Apps Script ปกติ อย่างไรก็ตาม สคริปต์จะยังคงทำงานไม่สำเร็จหากไปถึงบรรทัดโค้ดที่ต้องมีการให้สิทธิ์ซึ่งสคริปต์ไม่มี นักพัฒนาแอปสามารถใช้วิธีการ
ScriptApp.getAuthorizationInfo()
เพื่อควบคุมการเข้าถึงส่วนของโค้ดที่มีการเปลี่ยนแปลงระหว่างเวอร์ชันที่เผยแพร่ของ
ส่วนเสริมเพื่อหลีกเลี่ยงสถานการณ์นี้
ด้านล่างนี้คือตัวอย่างโครงสร้างที่แนะนําให้ใช้ในฟังก์ชันทริกเกอร์เพื่อ หลีกเลี่ยงข้อผิดพลาดในการให้สิทธิ์ ฟังก์ชันทริกเกอร์ตัวอย่างจะตอบสนองต่อเหตุการณ์ form-submit ภายในส่วนเสริมของ Google ชีต และหากต้องมีการให้สิทธิ์อีกครั้ง ฟังก์ชันจะส่งอีเมลแจ้งเตือนให้ผู้ใช้ส่วนเสริมโดยใช้ HTML ที่สร้างจากเทมเพลต
Code.gs
authorizationemail.html
ข้อจำกัด
ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริมจะอยู่ภายใต้ข้อจำกัดเดียวกัน ที่ควบคุมทริกเกอร์ที่ติดตั้งได้ในโปรเจ็กต์ Apps Script ประเภทอื่นๆ
นอกจากข้อจำกัดเหล่านี้แล้ว ทริกเกอร์ที่ติดตั้งได้ในส่วนเสริมยังมีข้อจำกัดอื่นๆ อีกหลายประการ ดังนี้
- ส่วนเสริมแต่ละรายการจะมีทริกเกอร์แต่ละประเภทได้เพียง 1 รายการต่อผู้ใช้ 1 รายการต่อเอกสาร 1 รายการ เช่น ในสเปรดชีตหนึ่งๆ ผู้ใช้หนึ่งๆ จะมีทริกเกอร์แก้ไขได้เพียง 1 รายการเท่านั้น แม้ว่าผู้ใช้จะมีทริกเกอร์การส่งแบบฟอร์มหรือทริกเกอร์ที่กำหนดเวลาไว้ในสเปรดชีตเดียวกันได้ก็ตาม ผู้ใช้รายอื่นที่มีสิทธิ์เข้าถึง สเปรดชีตเดียวกันอาจมีชุดทริกเกอร์แยกของตนเอง
- ส่วนเสริมจะสร้างทริกเกอร์ได้เฉพาะไฟล์ที่ใช้ส่วนเสริมนั้น กล่าวคือ ส่วนเสริมที่ใช้ในเอกสาร ก. ของ Google จะสร้างทริกเกอร์เพื่อ ตรวจสอบเมื่อเปิดเอกสาร ข. ของ Google ไม่ได้
- ทริกเกอร์ที่อิงตามเวลาจะทำงานได้ไม่เกิน 1 ครั้งต่อชั่วโมง
- ส่วนเสริมจะไม่ส่งอีเมลถึงผู้ใช้โดยอัตโนมัติเมื่อโค้ดที่เรียกใช้โดยทริกเกอร์ที่ติดตั้งได้แสดงข้อยกเว้น นักพัฒนาแอปมีหน้าที่ตรวจสอบ และจัดการกรณีที่เกิดข้อผิดพลาดอย่างเหมาะสม
- ทริกเกอร์ของส่วนเสริมจะหยุดทำงานในสถานการณ์ต่อไปนี้
- หากผู้ใช้ถอนการติดตั้งส่วนเสริม
- หากส่วนเสริมถูกปิดใช้ในเอกสาร (หากเปิดใช้ส่วนเสริมอีกครั้ง ทริกเกอร์ จะกลับมาทำงานอีกครั้ง) หรือ
- หากนักพัฒนาแอปยกเลิกการเผยแพร่ส่วนเสริมหรือส่งเวอร์ชันที่ใช้งานไม่ได้ไปยัง ร้านค้าส่วนเสริม
- ฟังก์ชันทริกเกอร์ของส่วนเสริมจะทำงานจนกว่าจะถึงโค้ดที่ใช้บริการที่ไม่ได้รับอนุญาต แล้วจึงหยุดทำงาน ซึ่งจะเป็นจริงก็ต่อเมื่อมีการเผยแพร่ส่วนเสริมเท่านั้น ทริกเกอร์เดียวกันในโปรเจ็กต์ Apps Script ปกติหรือส่วนเสริมที่ยังไม่ได้เผยแพร่จะไม่ทำงานเลยหากส่วนใดส่วนหนึ่งของสคริปต์ต้องมีการให้สิทธิ์
- ทริกเกอร์ที่ติดตั้งได้จะขึ้นอยู่กับโควต้าทริกเกอร์ของ Apps Script