เช่นเดียวกับทริกเกอร์ทั่วไป ทริกเกอร์ที่ติดตั้งได้จะ Apps Script จะเรียกใช้ฟังก์ชันโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง เช่น การเปิดเอกสาร อย่างไรก็ตาม ทริกเกอร์ที่ติดตั้งได้จะให้ประโยชน์มากกว่า ความยืดหยุ่นที่มากกว่าตัวกระตุ้นง่ายๆ: พวกเขาสามารถเรียกใช้ บริการ ที่ต้องใช้ การให้สิทธิ์ จะมีการจัดกิจกรรมเพิ่มเติมหลายประเภท รวมทั้งกิจกรรมแบบจับเวลา (นาฬิกา) ทั้งยังควบคุมได้แบบเป็นโปรแกรม สำหรับทั้งแบบง่ายและ ทริกเกอร์ที่ติดตั้งได้ Apps Script จะส่งฟังก์ชันที่ทริกเกอร์ CANNOT TRANSLATE event object ที่มีข้อมูล เกี่ยวกับบริบทที่เหตุการณ์เกิดขึ้น
ข้อจำกัด
แม้ว่าทริกเกอร์ที่ติดตั้งได้จะให้ความยืดหยุ่นมากกว่าทริกเกอร์ทั่วไป แต่จะยังคงมีข้อจำกัดหลายประการ ดังนี้
- โดยจะไม่ทำงานหากเปิดไฟล์ในโหมดอ่านอย่างเดียว (ดูหรือแสดงความคิดเห็น) สำหรับ สคริปต์แบบสแตนด์อโลน ผู้ใช้ต้องมีสิทธิ์ดูไฟล์สคริปต์ใน เพื่อให้ทริกเกอร์ทำงานอย่างถูกต้อง
การเรียกใช้สคริปต์และคำขอ API จะไม่ทำให้ทริกเกอร์ทำงาน ตัวอย่างเช่น การโทร
FormResponse.submit()
การส่งแบบฟอร์มตอบกลับใหม่จะไม่ทำให้ทริกเกอร์การส่งแบบฟอร์มทำงานทริกเกอร์ที่ติดตั้งได้จะทำงานในบัญชีของผู้ที่สร้าง ให้พวกเขา ตัวอย่างเช่น หากคุณสร้างทริกเกอร์เปิดที่ติดตั้งได้ ทริกเกอร์นี้จะเรียกใช้ เมื่อเพื่อนร่วมงานของคุณเปิดเอกสาร (หากเพื่อนร่วมงานของคุณมีสิทธิ์ในการแก้ไข) แต่ทำงานเป็นบัญชีของคุณ หมายความว่าหากคุณสร้างทริกเกอร์เพื่อ ส่งอีเมลเมื่อมีการเปิดเอกสาร อีเมลจะส่งจาก บัญชีของคุณ ไม่จำเป็นต้องเป็นบัญชีที่เปิดเอกสาร อย่างไรก็ตาม คุณสามารถสร้างทริกเกอร์ที่ติดตั้งได้สำหรับแต่ละบัญชี ซึ่งจะส่งผลให้ ในอีเมลที่ส่งจากแต่ละบัญชี
บัญชีหนึ่งๆ จะไม่เห็นทริกเกอร์ที่ติดตั้งจากบัญชีที่ 2 แม้แต่ แม้ว่าบัญชีแรกจะยังคงเปิดใช้งานทริกเกอร์เหล่านั้นได้
ทริกเกอร์ที่ติดตั้งได้จะขึ้นอยู่กับทริกเกอร์ Apps Script ขีดจำกัดโควต้า
ทริกเกอร์ที่ขึ้นอยู่กับเวลา
ทริกเกอร์ที่ขึ้นอยู่กับเวลา (เรียกอีกอย่างว่าทริกเกอร์นาฬิกา) คล้ายกับ งาน cron ใน Unix ทริกเกอร์ที่ขึ้นอยู่กับเวลาทำให้ จะทำงานในเวลาที่กำหนดหรือในช่วงเวลาที่เกิดซ้ำ ตาม ทุกนาที หรือไม่บ่อยแค่เดือนละครั้ง (โปรดทราบว่า ส่วนเสริม สามารถใช้ทริกเกอร์ที่ขึ้นอยู่กับเวลา ไม่เกิน 1 ครั้งต่อชั่วโมง) เวลาอาจเล็กน้อย แบบสุ่ม เช่น หากคุณสร้างทริกเกอร์ เวลา 9:00 น. ตามรอบ Apps Script เลือกเวลาระหว่าง 9.00 น. - 10.00 น. จากนั้นจะคง ช่วงเวลาดังกล่าวควรสอดคล้องกันแบบวันต่อวันเพื่อให้เวลา 24 ชั่วโมงก่อนเกิด ทริกเกอร์เริ่มทำงานอีกครั้ง
ต่อไปนี้คือตัวอย่างของ แอป Google Chat ที่โพสต์ข้อความทุกๆ นาทีไปยังทุกพื้นที่ทำงานที่มีแอปอยู่:
// Example app for Google Chat that demonstrates app-initiated messages
// by spamming the user every minute.
//
// This app makes use of the Apps Script OAuth2 library at:
// https://github.com/googlesamples/apps-script-oauth2
//
// Follow the instructions there to add the library to your script.
// When added to a space, we store the space's ID in ScriptProperties.
function onAddToSpace(e) {
PropertiesService.getScriptProperties()
.setProperty(e.space.name, '');
return {
'text': 'Hi! I\'ll post a message here every minute. ' +
'Please remove me after testing or I\'ll keep spamming you!'
};
}
// When removed from a space, we remove the space's ID from ScriptProperties.
function onRemoveFromSpace(e) {
PropertiesService.getScriptProperties()
.deleteProperty(e.space.name);
}
// Add a trigger that invokes this function every minute in the
// "Edit > Current Project's Triggers" menu. When it runs, it
// posts in each space the app was added to.
function onTrigger() {
var spaceIds = PropertiesService.getScriptProperties()
.getKeys();
var message = { 'text': 'Hi! It\'s now ' + (new Date()) };
for (var i = 0; i < spaceIds.length; ++i) {
postMessage(spaceIds[i], message);
}
}
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
// The values below are copied from the JSON file downloaded upon
// service account creation.
// For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines
// of the private key
var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';
// Posts a message into the given space ID via the API, using
// service account authentication.
function postMessage(spaceId, message) {
var service = OAuth2.createService('chat')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
.setClientId(SERVICE_ACCOUNT_EMAIL)
.setPropertyStore(PropertiesService.getUserProperties())
.setScope(SCOPE);
if (!service.hasAccess()) {
Logger.log('Authentication error: %s', service.getLastError());
return;
}
var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
UrlFetchApp.fetch(url, {
method: 'post',
headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
contentType: 'application/json',
payload: JSON.stringify(message),
});
}
ทริกเกอร์ที่ขับเคลื่อนด้วยเหตุการณ์
ทริกเกอร์ที่ขับเคลื่อนด้วยเหตุการณ์ที่ติดตั้งได้นั้นมีแนวคิดคล้ายกับ
ทริกเกอร์ที่เรียบง่าย
เช่น onOpen()
แต่ตอบสนองต่อเหตุการณ์เพิ่มเติมและทำงานได้
แตกต่างกัน
เช่น ทริกเกอร์เปิดที่ติดตั้งได้สำหรับ Google ชีต
เปิดใช้งานเมื่อใดก็ตามที่ผู้ใช้ที่มีสิทธิ์แก้ไขเปิดสเปรดชีต
เหมือนกับทริกเกอร์ onOpen()
แบบง่าย แต่เวอร์ชันที่ติดตั้งได้จะทำสิ่งต่อไปนี้ได้
เรียกใช้บริการที่ต้องใช้
การให้สิทธิ์ โปรแกรมที่ติดตั้ง
จะทำงานด้วยการให้สิทธิ์ของผู้ใช้ที่สร้างทริกเกอร์ แม้
หากผู้ใช้รายอื่นที่มีสิทธิ์แก้ไขเปิดสเปรดชีต
มีทริกเกอร์ที่ติดตั้งได้หลายรายการ Google Workspace แอปพลิเคชัน:
- ทริกเกอร์เปิดที่ติดตั้งได้จะทำงานเมื่อผู้ใช้เปิดสเปรดชีต เอกสาร หรือแบบฟอร์มที่บุคคลเหล่านั้นมีสิทธิ์แก้ไข
- ทริกเกอร์แก้ไขที่ติดตั้งได้จะทำงานเมื่อผู้ใช้แก้ไขค่าใน สเปรดชีต
- ทริกเกอร์การเปลี่ยนแปลงที่ติดตั้งได้จะทำงานเมื่อผู้ใช้แก้ไขโครงสร้างของ สเปรดชีตนั้น เช่น การเพิ่มชีตใหม่หรือนำ
- ทริกเกอร์การส่งแบบฟอร์มที่ติดตั้งได้จะทำงานเมื่อผู้ใช้ตอบกลับแบบฟอร์ม ทริกเกอร์การส่งแบบฟอร์มมี 2 เวอร์ชัน ระบบหนึ่งสำหรับ Google ฟอร์มเอง และอีกลิงก์หนึ่งสำหรับชีตหากส่งแบบฟอร์มไปยังสเปรดชีต
- ทริกเกอร์กิจกรรมในปฏิทินที่ติดตั้งได้จะทำงานเมื่อกิจกรรมในปฏิทินของผู้ใช้ มีการอัปเดต เช่น สร้าง แก้ไข หรือลบ
คุณสามารถใช้ทริกเกอร์ที่ติดตั้งได้ในสคริปต์แบบสแตนด์อโลนและสคริปต์ที่เชื่อมโยง ตัวอย่างเช่น
สคริปต์แบบสแตนด์อโลนสามารถสร้างทริกเกอร์ที่ติดตั้งได้แบบเป็นโปรแกรมสำหรับ
ไฟล์ Google ชีตที่กำหนดเองโดยการโทร
TriggerBuilder.forSpreadsheet(key)
และส่งผ่านรหัสสเปรดชีต
จัดการทริกเกอร์ด้วยตนเอง
วิธีสร้างทริกเกอร์ที่ติดตั้งได้ในเครื่องมือแก้ไขสคริปต์ ให้ทำตามขั้นตอนต่อไปนี้
- เปิดโปรเจ็กต์ Apps Script
- คลิกทริกเกอร์ ทางด้านซ้าย
- คลิกเพิ่มทริกเกอร์ที่ด้านขวาล่าง
- เลือกและกำหนดค่าประเภททริกเกอร์ที่ต้องการสร้าง
- คลิกบันทึก
จัดการทริกเกอร์แบบเป็นโปรแกรม
คุณยังสร้างและลบทริกเกอร์แบบเป็นโปรแกรมได้ด้วย
บริการสคริปต์ เริ่มด้วยการโทร
ScriptApp.newTrigger(functionName)
ซึ่งแสดงผล
TriggerBuilder
ตัวอย่างต่อไปนี้จะแสดงวิธีสร้างทริกเกอร์ที่ใช้เวลา 2 ตัว เริ่มทำงานทุก 6 ชั่วโมง และจะเริ่มทำงานทุกวันจันทร์เวลา 9.00 น. (ในเขตเวลา ที่สคริปต์ตั้งค่าไว้)
ตัวอย่างต่อไปนี้จะแสดงวิธีสร้างทริกเกอร์เปิดที่ติดตั้งได้สำหรับ
สเปรดชีต โปรดทราบว่าสคริปต์สำหรับonOpen()
ทริกเกอร์ที่ติดตั้งได้ไม่จำเป็นต้องเชื่อมโยงกับสเปรดชีต วิธีสร้าง
ทริกเกอร์นี้จากสคริปต์แบบสแตนด์อโลน เพียงแค่แทนที่
SpreadsheetApp.getActive()
ที่โทรหา
SpreadsheetApp.openById(id)
หากต้องการแก้ไขทริกเกอร์ที่ติดตั้งได้ซึ่งมีอยู่แล้วแบบเป็นโปรแกรม คุณต้องลบทริกเกอร์ดังกล่าว แล้วสร้างใหม่ หากก่อนหน้านี้คุณได้จัดเก็บรหัสของทริกเกอร์ คุณจะทำสิ่งต่อไปนี้ได้ ลบคีย์ได้โดยส่งรหัสเป็นอาร์กิวเมนต์ไปยังฟังก์ชันด้านล่าง
ข้อผิดพลาดในตัวทริกเกอร์
เมื่อทริกเกอร์ที่ติดตั้งได้เริ่มทำงาน แต่ฟังก์ชันดังกล่าวแสดงข้อผิดพลาดหรือ ไม่เช่นนั้น คุณจะไม่พบข้อความแสดงข้อผิดพลาดบน บนหน้าจอ เพราะเมื่อทริกเกอร์ตามเวลาทำงานหรือผู้ใช้รายอื่นเปิดใช้งาน ทริกเกอร์การส่งแบบฟอร์มของคุณ คุณอาจไม่ได้อยู่หน้าคอมพิวเตอร์ด้วยซ้ำ
แต่ Apps Script จะส่งอีเมลต่อไปนี้ให้คุณแทน
From: noreply-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 และ ปิดใช้งานทริกเกอร์ที่คุณไม่ต้องการใช้แล้ว ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่
script.google.com
- คลิกทริกเกอร์ของฉันทางด้านซ้าย
หากต้องการลบทริกเกอร์ ให้คลิกเพิ่มเติมที่ด้านขวาของทริกเกอร์
ลบทริกเกอร์
ทริกเกอร์ในส่วนเสริม
นอกจากทริกเกอร์ที่ติดตั้งได้แล้ว คุณสามารถใช้ทริกเกอร์ไฟล์ Manifest ใน ส่วนเสริม สำหรับข้อมูลเพิ่มเติม ดู ทริกเกอร์สำหรับส่วนเสริม Google Workspace