延續這幾天的資安話題,今天要來聊的是關於 Library 的注意事項。
在 Google Apps Script 的世界裡,Library 就像是一把瑞士刀 - 功能強大、使用方便,但如果不小心使用,也可能傷到自己。
今天我們要來深入探討 Google Apps Script Library 這個既令人愛不釋手,又讓人不得不謹慎對待的功能。
簡單來說,Library 就像是一個「共用的程式碼工具箱」。
您可以將一些常用、寫好的函式 (function) 封裝在一個獨立的 Apps Script 專案裡,然後將這個專案發布成一個 Library。之後,任何其他的 Apps Script 專案都可以「引用」這個 Library,直接使用裡面寫好的函式,而不需要重複複製貼上相同的程式碼。
這就像是在 Python 裡 import requests
,或在 JavaScript 裡 import lodash
一樣的概念。
使用 Library 有幾個非常顯著的優點:
如果您有很多個試算表都需要一個「發送客製化 Email」的功能,您不需要在每個試算表的指令碼中都寫一次同樣的程式碼。只要寫一次在 Library 中,然後讓所有專案都去呼叫它即可。
當您需要修改這個共用功能時(例如:Email 格式要調整),您只需要更新 Library 的程式碼。所有引用這個 Library 的專案在更新版本後,就能立刻享受到新的功能,而不用一個個去修改。
您可以將一些複雜的、通用的邏輯(例如:處理日期格式、連接外部 API 等)移到 Library 中,讓您的主要專案程式碼更專注於核心業務邏輯,看起來更簡潔、更容易閱讀。
您可以輕鬆地將您寫好的工具函式庫分享給同事或開發社群,他們只需要知道您的 Library ID 就可以使用,而不需要看到或修改您的原始碼。
讓我們用一個簡單的例子來走一遍完整流程:建立一個會傳送問候語的 Library,然後在另一個專案中使用它。
建立新的 Apps Script 專案
撰寫共用函式
在程式碼編輯器中,刪除預設的 myFunction,然後貼上以下程式碼:
/**
* 產生一句帶有名字的問候語。
* @param {string} name 要問候的人名。
* @returns {string} 完整的問候語。
*/
function sayHello(name) {
return 'Hello, ' + name + '! 歡迎使用我的 Library。';
}
/**
* 這是一個私有函式,不會被外部看到。
* 結尾有底線 "_" 是 GAS 的慣例,代表這個函式僅供內部使用。
*/
function internalHelper_() {
// 這個函式無法被其他專案呼叫
}
注意:只有在全域範圍 (global scope) 中定義的函式才能被外部引用。結尾有底線 _ 的函式會被自動隱藏,這是一個很好的習慣,用來區分公用和私有函式。
儲存並部署為 Library
建立或打開另一個專案
到 script.google.com 建立一個新專案,並命名為 TestMyLibrary。
加入 Library
設定 Library 屬性
呼叫 Library 的函式
撰寫以下程式碼來呼叫 Library 裡的 sayHello 函式:
function testMyNewLibrary() {
// 使用您設定的「ID」來呼叫 Library
// 就像呼叫 MailApp.sendEmail() 一樣的語法
var message = Greeting.sayHello('Peter');
// Logger.log() 會把訊息顯示在執行紀錄中
Logger.log(message);
}
執行後,您應該會看到以下輸出:
Hello, Peter! 歡迎使用我的 Library。
雖然 Library 提供了極大的便利性,但它也帶來了不容忽視的安全風險。
因為 Library 的程式碼通常不是你自己寫的,可能來自:
問題在於:你不知道這份 Library 的程式裡面到底做了什麼。
它可能會:
這就像是你拿到一個「安裝程式」,但沒檢查來源就直接安裝到電腦裡一樣。
假設你找到一個 Library,說可以幫你快速寄 Email:
安全的作法:
不安全的作法:
這時就要小心,因為它可能在背後偷偷讀取你的資料。
當您修改了 Library 的程式碼後,必須儲存一個新的版本,然後回到您的主專案,手動將 Library 的版本更新到最新,否則主專案會繼續使用舊版本的程式碼。
Library 的程式碼是以使用者的身分來執行的。例如,如果您的 Library 有一個寄信功能,那麼執行主專案的使用者必須授權「寄送電子郵件」的權限,而不是 Library 的作者。
在 Library 的函式上方使用 JSDoc 格式撰寫註解,可以讓使用者在呼叫您的 Library 時獲得非常有用的自動完成提示和說明。
使用第三方 Library,就像請別人幫你搬家。
如果是認識的專業搬家公司(可信來源),風險低。
如果是陌生人說「我免費幫你搬」,還要求你交出家裡鑰匙(過度權限),那就是高風險行為。
Library 是 Google Apps Script 生態系中不可或缺的一環,它讓我們能夠快速建構功能豐富的應用程式。但同時,我們也必須保持警覺,確保我們使用的 Library 是安全可靠的。
在 GASO 的學習地圖中,Library 的使用與安全防護都是重要的學習節點。只有掌握了正確的使用方式,我們才能真正發揮 Library 的威力,同時保護我們的資料安全。
明天,我們將繼續探索 Google Apps Script 的其他重要主題,讓我們的學習地圖更加完整!
如果想要看一些我鐵人賽之外的 Google Apps Script 分享,
也歡迎追蹤我的 Threads 和 Facebook