如果指令碼是從 Google 試算表、Google 文件、Google 簡報或 Google 表單檔案建立,而非獨立指令碼,則會繫結至該檔案。繫結指令碼所附加的檔案稱為「容器」。繫結指令碼通常與獨立指令碼的行為類似,但不會顯示在 Google 雲端硬碟中,也無法從繫結的檔案中分離,而且會獲得對上層檔案的幾項特殊權限。
指令碼也可以繫結至 Google 協作平台,但這些指令碼幾乎一律會部署為網路應用程式。繫結至 Google 試算表、文件、簡報或表單的指令碼也可以成為網頁應用程式,但這種情況並不常見。
繫結指令碼實際上是未發布的 Google Workspace 外掛程式,只能用於繫結的檔案。
建立繫結指令碼
您可以在 Google 文件、試算表、簡報和表單中建立繫結指令碼。
文件、試算表或簡報
如要在 Google 文件、試算表或簡報中建立繫結指令碼,請在 Google 文件中開啟文件、在 Google 試算表中開啟試算表,或在 Google 簡報中開啟簡報,然後依序點選「擴充功能」>「Apps Script」。如要在日後重新開啟指令碼,請重複上述步驟,或從 Apps Script 資訊主頁開啟指令碼。
表單
如要在 Google 表單中建立繫結指令碼,請開啟表單,然後依序點選「更多」「指令碼編輯器」。如要在日後重新開啟腳本,請重複上述步驟,或從 Apps Script 資訊主頁開啟腳本。
clasp 工具無法建立繫結指令碼,但可以複製及編輯這類指令碼。
特殊方法
繫結指令碼可以呼叫獨立指令碼無法呼叫的幾種方法:
getActiveSpreadsheet、getActiveDocument、getActivePresentation和getActiveForm可讓繫結指令碼參照父項檔案,而不必參照檔案的 ID。getUi可讓繫結指令碼存取上層檔案的使用者介面,以便新增自訂選單、對話方塊和側欄。- 在試算表、
getActiveSheet、getActiveRange和getActiveCell中,指令碼可判斷使用者目前的工作表、選取的儲存格範圍或選取的個別儲存格。setActiveSheet和setActiveRange讓指令碼變更這些選項。 - 在文件、
getActiveTab、getCursor和getSelection中,指令碼可以判斷使用者目前的索引標籤、游標位置或所選文字。setActiveTab、setCursor和setSelection讓指令碼變更這些選項。
詳情請參閱「擴充 Google 試算表」或「擴充 Google 文件」指南。
這些方法只能用於從指令碼編輯器、選單項目、對話方塊、側欄或觸發條件執行的繫結指令碼。如果以網頁應用程式或 Google Apps Script API 執行繫結指令碼,就無法使用這些方法。
自訂選單、對話方塊和側欄
繫結指令碼可新增自訂選單和對話方塊或側欄,自訂試算表、文件和表單。指令碼只能與目前開啟檔案執行個體的使用者介面互動。繫結至某份文件的指令碼無法影響其他文件的使用者介面。
觸發條件
繫結指令碼可以使用簡單觸發條件,例如特殊 onOpen 函式,只要使用者開啟檔案並具備編輯權限,系統就會自動執行該函式。與所有類型的指令碼一樣,這些指令碼也可以使用可安裝的觸發條件。
自訂函式
自訂函式是繫結至 Google 試算表的指令碼中的函式,您可以使用 =myFunctionName() 語法,直接從儲存格呼叫自訂函式。自訂函式與 Google 試算表中的數百個內建函式 (例如 AVERAGE 或 SUM) 類似,但您可以定義自訂函式的行為。
存取繫結指令碼
只有具備容器編輯權限的使用者,才能執行容器的繫結指令碼。 只有檢視權限的協作者無法開啟指令碼編輯器。如果他們複製容器檔案,就會成為副本的擁有者,並可查看及執行副本中的指令碼。
如要瞭解如何共用指令碼的容器檔案,請參閱「透過雲端硬碟共用檔案」。
所有繫結至容器的指令碼都會使用為容器檔案定義的相同擁有者、檢視者和編輯者存取權清單。無論是誰建立,容器擁有者都會取得新指令碼專案的擁有權。