可安裝的觸發條件就像簡易觸發條件一樣 Apps Script 會在系統發生特定事件時自動執行函式。 開啟文件等不過可安裝的觸發條件 彈性,比簡單的觸發條件 服務 需要 授權、 他們提供多種額外的事件,包括時間 (時鐘) 您也能透過程式輔助方式控制適用於簡易型和 可安裝的觸發條件,Apps Script 會傳遞已觸發的函式 換 包含資訊的事件物件 事件發生時的情境資訊
限制
雖然可安裝的觸發條件比簡單的觸發條件更具彈性 但必須遵守一些限制:
- 如果檔案是以唯讀 (檢視或註解) 模式開啟,就不會執行。適用對象 獨立指令碼,使用者必須至少要具備 才能正常執行
指令碼執行和 API 要求不會導致觸發條件執行。例如: 撥號中
FormResponse.submit()
不會導致表單的提交觸發條件觸發執行。可安裝觸發條件一律會在建立者的帳戶下執行 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件舉例來說,如果您建立可安裝的開啟觸發條件,該觸發條件就會執行 同事開啟文件時 (如果同事具有編輯權限), 但可做為你的帳戶使用也就是說,如果您建立 在文件開啟時傳送電子郵件,電子郵件一律會來自 帳戶,不一定是開立文件的帳戶。不過 你可以為每個帳戶建立可安裝的觸發條件 。
特定帳戶無法查看從第二個帳戶安裝的觸發條件, 但第一個帳戶還是可以啟用這些觸發條件
可安裝的觸發條件受到 Apps Script 觸發條件影響 配額限制。
時間導向觸發條件
時間型觸發條件 (也稱為時鐘觸發條件) 與 Cron 工作。以時間為準的觸發條件 指令碼只在特定時間或週期性間隔執行 或是每月執行一次的頻率(請注意, 加購內容 使用時間導向的觸發條件 最多一次)。時間可能略有不同 。舉例來說,如果您建立週期性 9 點的觸發條件 Apps Script 會選擇上午 9 點到上午 10 點之間的時間,然後 時間是每天都固定的 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 應用程式:
- 「可安裝」觸發條件會在使用者開啟試算表時執行。 有權編輯的文件或表單。
- 可安裝的編輯觸發條件會在使用者修改 試算表。
- 可安裝的「變更」觸發條件會在使用者修改 例如新增工作表或移除 。
- 使用者回應表單時,系統會執行可安裝的表單提交觸發條件。 表單提交觸發條件有兩種版本 Google 表單本身 如果表單提交到試算表,則為 Google 試算表。
- 使用者的日曆活動時,執行可安裝的日曆活動觸發條件 例如建立、編輯或刪除。
您可以在獨立和繫結的指令碼中使用可安裝的觸發條件。例如:
獨立指令碼可透過程式輔助方式,建立可安裝的觸發條件
方法是呼叫
TriggerBuilder.forSpreadsheet(key)
然後傳送試算表的 ID
手動管理觸發條件
如要在指令碼編輯器中手動建立可安裝的觸發條件,請按照下列步驟操作: 步驟如下:
- 開啟 Apps Script 專案。
- 按一下左側的「觸發條件」圖示 。
- 點選右下方的「新增觸發條件」。
- 選取並設定您想建立的觸發條件類型。
- 按一下 [儲存]。
透過程式輔助方式管理觸發條件
您也可以透過程式碼,以程式輔助的方式建立及刪除觸發條件
指令碼服務。首先撥打電話
ScriptApp.newTrigger(functionName)
,
會傳回
TriggerBuilder
。
下例說明如何建立兩個時間導向觸發條件,一個觸發事件 每 6 小時啟動一次,並且在每週一上午 9 點 (以時區為準) 啟動 您的指令碼設定的目標使用者)。
下一個範例說明如何為
試算表。請注意,與簡易 onOpen()
觸發條件不同的是,
可安裝的觸發條件不需要與試算表繫結。如要建立
這個觸發條件
SpreadsheetApp.getActive()
與以下電話號碼的成員通話:
SpreadsheetApp.openById(id)
。
如要透過程式輔助方式修改現有可安裝的觸發條件,您必須將其刪除 建立新頻道如果您先前已儲存觸發條件的 ID, 將 ID 做為引數傳遞至以下函式以刪除。
觸發條件發生錯誤
當可安裝的觸發條件啟動,但函式擲回例外狀況或 否則就無法 。畢竟,當時間觸發的觸發條件執行,或其他使用者啟用時 提交表單觸發條件,您可能根本不在電腦前。
而是會透過電子郵件將下列內容傳送給您:
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
。 - 按一下左側的「我的觸發條件」。
如要刪除觸發條件,請按一下觸發條件右側的「更多」圖示
>刪除觸發條件。
外掛程式中的觸發條件
除了可安裝的觸發條件外,您也可以在 外掛程式。如需更多資訊 看 Google Workspace 外掛程式觸發條件。