Library 在 [部屬] 內的中文翻譯是資料庫,但官方文件上翻譯為程序庫,該筆記一律以 Library 來記錄
Library 範例 Code
在 JTLibrary 的 gs Code 內以格式化日期當成說明範例,筆記重點為
- JSDoc 註解:引用該 function 會有對應說明
- private function:function 名稱最後加上下底線 (_),外部就無法進行呼叫
/**
* 格式化日期
* @param {Date} date
* @return {string} 格式化後的字串 (yyyy-MM-dd HH:mm:ss)
*/
function formatCurrentDate(date = new Date()) {
return Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
}
/**
* private function,外部 Project 無法呼叫
*/
function internalHelper_() {
console.log("該 function 僅內部使用");
}
部屬 Library
JTLibrary => 部屬按鈕 => 新增部屬作業 => 選取類型選擇 [資料庫],專案名稱即為 Library 預設名稱
加入 Library
JTLibrary 專案 => 選項 => ID,可以查到該 [指令碼 ID (Script ID)],要特別注意,該 ID 不是上圖 [部屬作業 ID] ,一開始搞錯 ID,一直無法引用
建立新 JTLibraryAction 專案 => 資料庫 => 點選右側加號 (+)
輸入 [指令碼 ID (Sceipt ID)] 後按下 [查詢] 按鈕,有存取權限情況下就會出現
引用 Library 時萬一 [指令碼 ID (Script ID)] 錯誤或是沒有存取權限,會出現下圖錯誤訊息
授與權限方式即為分享該 Google Apps Script 專案,有兩種方式
輸入 formatCurrentDate 時,因為有設定 JSDoc 所以會出現文字說明
實際執行 最新程式碼快照 (開發人員模式)
Library 內有個特殊版控版本 - 最新程式碼快照 (開發人員模式) Head (Development mode),不需要部屬出去就可以進行測試使用
刻意在 formatCurrentDate 內呼叫 internalHelper_ function 並只儲存專案未部屬
版本選擇
把 JTLibrary 部屬為新版本,可以在下圖中 [進行中] 看見兩個版本
JTLibraryAction Project 並不會自動套用最新 JTLibrary 部屬版本,是否需要進行升級就看個人需求
JSDoc 文件
JSDoc 說明文件除了 Code 輸入時可以看到,在 Library 內也提供一覽表可以參考
會用網頁形式來呈現文字說明
官方文件 Libraries 內注意事項
執行速度,直接把 Code 放在專案內比呼叫 library 來的快
library 命名,萬一已經存在同名 library,例如也取名 MailApp 的話,library 會覆蓋
加入 Library
JTLibrary 專案 => 選項 => ID,可以查到該 [指令碼 ID (Script ID)],要特別注意,該 ID 不是上圖 [部屬作業 ID] ,一開始搞錯 ID,一直無法引用
建立新 JTLibraryAction 專案 => 資料庫 => 點選右側加號 (+)
輸入 [指令碼 ID (Sceipt ID)] 後按下 [查詢] 按鈕,有存取權限情況下就會出現
- 已成功找到程式庫 JTLibrary 訊息
- 可用版本:可透過下拉選單決定要使用哪一個版本
- ID:預設為 Library 名稱,萬一該名稱不符合使用習慣,可以直接在這邊更改,不影響引用,事後修改該 ID 名稱的話,gs Code 裡面是不會自動一併修改,要手動修正為新 ID 名稱
引用 Library 時萬一 [指令碼 ID (Script ID)] 錯誤或是沒有存取權限,會出現下圖錯誤訊息
授與權限方式即為分享該 Google Apps Script 專案,有兩種方式
- 直接把特定使用者、群組加入
- 把一般存取權設定為 [知道連結的任何人]
在 JTLibraryAction 專案內的 gs Code 內輸入時,不會出現 private function internalHelper_
輸入 formatCurrentDate 時,因為有設定 JSDoc 所以會出現文字說明
實際執行 最新程式碼快照 (開發人員模式)
Library 內有個特殊版控版本 - 最新程式碼快照 (開發人員模式) Head (Development mode),不需要部屬出去就可以進行測試使用
刻意在 formatCurrentDate 內呼叫 internalHelper_ function 並只儲存專案未部屬
function formatCurrentDate(date = new Date()) {
// 新增:呼叫 private function
internalHelper_();
return Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
}
實際執行
版本選擇
把 JTLibrary 部屬為新版本,可以在下圖中 [進行中] 看見兩個版本
JTLibraryAction Project 並不會自動套用最新 JTLibrary 部屬版本,是否需要進行升級就看個人需求
JSDoc 文件
JSDoc 說明文件除了 Code 輸入時可以看到,在 Library 內也提供一覽表可以參考
會用網頁形式來呈現文字說明
官方文件 Libraries 內注意事項
執行速度,直接把 Code 放在專案內比呼叫 library 來的快
Warning: A script that uses a library doesn't run as quickly as it would if all the code were contained within a single script project. Although libraries can make development and maintenance more convenient, use them sparingly in projects where speed is critical. Because of this issue, library use should be limited in add-ons.
library 命名,萬一已經存在同名 library,例如也取名 MailApp 的話,library 會覆蓋
If you use an identifier name that matches the name of an already existing service, such as MailApp, or a previously added library, then the library you have added most recently overrides the existing service or library.
-1.jpg)
-3.jpg)
-4.jpg)
-5.jpg)
-6.jpg)
-16.jpg)
-17.jpg)


-9.jpg)
-10.jpg)


-13.jpg)
-14.jpg)
-15.jpg)
沒有留言:
張貼留言