Google Apps Script 屬性管理全攻略|PropertiesService

更新 發佈閱讀 8 分鐘

副標:用一套設定搞定環境變數、安全儲存 API Key 與跨專案共用。


問題背景與需求

  • 目標: 在 Google Apps Script(GAS)中統一管理專案設定。 將 API Key、環境參數等敏感資料安全儲存,避免硬編碼在程式中。 讓多個 GAS 專案可共用同一組設定,減少重複維護。
  • 限制: PropertiesService 的容量限制(約 9KB/專案屬性)。 無法直接在不同帳號間共用,需透過 API 或同步機制。
  • 輸出: 初始化與存取屬性值的範例。 安全性建議與常見錯誤整理。

💡 為什麼我會做這個? 一開始我在 GAS 裡用 const API_KEY = '...' 直接寫死 API Key,結果上傳到 GitHub 後被掃到。後來改用 PropertiesService,不但安全性提升,還能切換測試與正式環境,不必一行行改程式。


架構與流程

[初始化設定]

[透過 PropertiesService 寫入 Script Properties]

[程式執行時讀取屬性值]

[跨專案共用 → 發布為 Web App 或同步到 Google Sheet]

環境與版本

  • OS:不限(雲端執行)
  • Runtime:Google Apps Script V8
  • 套件:無需額外安裝
  • API:內建 PropertiesService

步驟實作

1) 初始化與寫入屬性

檔案與路徑/gas/init/properties_init.gs

function setProjectConfig() {
const props = PropertiesService.getScriptProperties();
props.setProperties({
'API_KEY': 'your_api_key_here',
'ENV': 'production',
'DB_URL': 'https://example.com/db'
});
Logger.log('設定已完成');
}

setProperties() 可一次寫入多個屬性,避免多次呼叫。


2) 讀取屬性

檔案與路徑/gas/utils/config.gs

function getConfig(key) {
return PropertiesService.getScriptProperties().getProperty(key);
}

function exampleUsage() {
const apiKey = getConfig('API_KEY');
Logger.log(`目前使用的 API_KEY:${apiKey}`);
}

3) 更新或刪除屬性

function updateConfig(key, value) {
PropertiesService.getScriptProperties().setProperty(key, value);
}

function deleteConfig(key) {
PropertiesService.getScriptProperties().deleteProperty(key);
}

4) 跨專案共用設定

由於 ScriptProperties 無法直接跨專案,需要:

  1. 將設定存到 Google Sheet。
  2. 或將設定專案發布為 Web App,其他專案透過 UrlFetchApp 讀取。

範例:透過 Google Sheet 共用

function syncConfigToSheet() {
const props = PropertiesService.getScriptProperties().getProperties();
const ss = SpreadsheetApp.openById('<SHEET_ID>');
const sh = ss.getSheetByName('config');
sh.clearContents();
let i = 1;
for (let k in props) {
sh.getRange(i, 1).setValue(k);
sh.getRange(i, 2).setValue(props[k]);
i++;
}
}

5) 安全儲存 API Key

  • 避免將 Key 寫死在程式碼。
  • 只在需要的地方呼叫 getProperty()。
  • 減少日誌中輸出完整 Key,可只顯示部分。
function safeLogKey() {
const key = getConfig('API_KEY');
Logger.log(`API_KEY (部分):${key.substring(0, 4)}****`);
}

驗證與結果

> 執行 setProjectConfig()
設定已完成

> 執行 exampleUsage()
目前使用的 API_KEY:your_api_key_here

常見錯誤與排錯表

訊息 可能原因 解法 null 屬性未設定或拼字錯誤 確認 setProperty() 有成功執行且 key 名稱一致 Exceeded maximum size 屬性資料超過容量限制 將大資料存 Google Sheet 或 Cloud Storage undefined 讀取變數時未宣告 key 使用 getProperties() 確認有哪些 key


PropertiesService 類型差異與適用場景

類型 範圍 常見用途 優點 限制 ScriptProperties 整個專案共用 API Key、環境變數、全域設定 所有使用者共用、存取簡單 容量約 9KB;不同專案不互通 UserProperties 依使用者分開 個人偏好設定、會員等級 針對不同使用者儲存不同值 無法跨使用者共用;容量限制 DocumentProperties 與特定文件/試算表綁定 與文件綁定的設定(欄位名稱、範本 ID) 自動隨文件保存 僅適用於綁定的檔案

🔹 建議:

  • 大多數情況下用 ScriptProperties 管理 API Key 與全域設定。 需要針對使用者儲存獨立資料時用 UserProperties。 綁定特定 Google 文件或試算表的情境才用 DocumentProperties。

延伸與 TODO

  • 增加 UserProperties 管理個別使用者設定。
  • 加入自動備份與還原機制。
  • 與 Secret Manager 或 Firebase Config 整合,提升安全性。

版本資訊(Changelog)

  • 2025-08-14:初稿完成

工具小筆記| PropertiesService 有三種型態:

  1. ScriptProperties:整個專案共用,最常用。
  2. UserProperties:每位使用者獨立儲存。
  3. DocumentProperties:與特定 Google 文件/試算表綁定。
留言
avatar-img
麟製所
2會員
46內容數
軟體、旅遊分享
麟製所的其他內容
2025/11/24
來台灣玩怕語言不通? 你是否遇過: 🌏 日本朋友來台灣旅遊,不懂中文查不到台鐵資訊 🗣️ 外國同事通勤,看不懂繁體中文介面 ✈️ 觀光客想掌握列車誤點資訊 💬 留學生、移工朋友需要友善的語言介面 現在,台鐵 LINE Bot 支援多國語言,讓每個人都能輕鬆使用!
2025/11/24
來台灣玩怕語言不通? 你是否遇過: 🌏 日本朋友來台灣旅遊,不懂中文查不到台鐵資訊 🗣️ 外國同事通勤,看不懂繁體中文介面 ✈️ 觀光客想掌握列車誤點資訊 💬 留學生、移工朋友需要友善的語言介面 現在,台鐵 LINE Bot 支援多國語言,讓每個人都能輕鬆使用!
2025/11/21
🚀 3 步驟快速上手 1️⃣ 輸入「到站提醒」 2️⃣ 點選推薦車次或輸入車次號碼 3️⃣ 一鍵完成設定,到站提醒立即啟動 功能特色 常用車次推薦 系統自動記錄你設定過的車次與路線 最多顯示 5 個常用車次,按使用次數排序 一鍵設定到站提醒,不需重新輸入目的地 範例: ⭐
2025/11/21
🚀 3 步驟快速上手 1️⃣ 輸入「到站提醒」 2️⃣ 點選推薦車次或輸入車次號碼 3️⃣ 一鍵完成設定,到站提醒立即啟動 功能特色 常用車次推薦 系統自動記錄你設定過的車次與路線 最多顯示 5 個常用車次,按使用次數排序 一鍵設定到站提醒,不需重新輸入目的地 範例: ⭐
2025/11/18
這篇文章提供一個完整的 Google Apps Script 範例,示範如何建立每天凌晨自動刷新資料、定期推送訊息,並避免重複觸發的觸發器。
2025/11/18
這篇文章提供一個完整的 Google Apps Script 範例,示範如何建立每天凌晨自動刷新資料、定期推送訊息,並避免重複觸發的觸發器。
看更多
你可能也想看
Thumbnail
随着区块链技术的迅猛发展,The Open Network(TON)作为一种高效、低成本的区块链网络,逐渐成为加密货币用户和开发者的首选平台。在TON生态中,批量转账作为一项关键功能,为用户提供了高效、便捷的资产管理方式。GTokenTool作为行业领先的TON链一键发币与批量转账工具平台,以其强大
Thumbnail
随着区块链技术的迅猛发展,The Open Network(TON)作为一种高效、低成本的区块链网络,逐渐成为加密货币用户和开发者的首选平台。在TON生态中,批量转账作为一项关键功能,为用户提供了高效、便捷的资产管理方式。GTokenTool作为行业领先的TON链一键发币与批量转账工具平台,以其强大
Thumbnail
可以加鄭先生的賴zzc670118資訊,投稿人鄭先生網路投資被騙有追回來 近期大家要注意網路上看到的投資廣告或網友傳來的投資訊息,標榜「#保證獲利」、「#沒有風險」、「#穩賺不賠」訊息,這些都是詐騙集團常用的#釣魚手法,目的就是要誇大吸引被害人,以便進一步用於金融詐騙。務必提高警覺,勿輕易
Thumbnail
可以加鄭先生的賴zzc670118資訊,投稿人鄭先生網路投資被騙有追回來 近期大家要注意網路上看到的投資廣告或網友傳來的投資訊息,標榜「#保證獲利」、「#沒有風險」、「#穩賺不賠」訊息,這些都是詐騙集團常用的#釣魚手法,目的就是要誇大吸引被害人,以便進一步用於金融詐騙。務必提高警覺,勿輕易
Thumbnail
可以加鄭先生的賴zzc670118資訊,投稿人鄭先生網路投資被騙有追回來 平台:GAS 騙子:Bryce GAS是詐騙,這個平台已經完成佈局,正在收網中,遇到要小心,希望不要有人再被騙了,GAS涉詐金額高達1億之多,受害人都是無法出金,要繳納各種費用 近期大家要注意網路上看到的投資廣
Thumbnail
可以加鄭先生的賴zzc670118資訊,投稿人鄭先生網路投資被騙有追回來 平台:GAS 騙子:Bryce GAS是詐騙,這個平台已經完成佈局,正在收網中,遇到要小心,希望不要有人再被騙了,GAS涉詐金額高達1億之多,受害人都是無法出金,要繳納各種費用 近期大家要注意網路上看到的投資廣
Thumbnail
本文探討如何利用政府提供的YouBike開放數據進行數據分析,以揭示共享單車系統的使用趨勢。作者使用Google Apps Script分析不同時間點的YouBike使用率,並通過線性回歸預測供需平衡,以及針對特定站點的使用模式進行深入挖掘。最後總結了公館不同出口的使用情況,提供了最佳的租借選擇。
Thumbnail
本文探討如何利用政府提供的YouBike開放數據進行數據分析,以揭示共享單車系統的使用趨勢。作者使用Google Apps Script分析不同時間點的YouBike使用率,並通過線性回歸預測供需平衡,以及針對特定站點的使用模式進行深入挖掘。最後總結了公館不同出口的使用情況,提供了最佳的租借選擇。
Thumbnail
这篇文章主要介绍了GAS费能否降低?通缩致使FIL币价上涨,近看1000U,矿工们对Filecoin的高额GAS费深恶痛绝。那什么是GAS费呢?目前消封装算力需要消耗多少FIL的GAS费?那如此之高的费用支撑矿工继续工作的动力又是什么呢?是否GAS费用会不断上涨?下面一起来参考下内容吧 🚀 币安
Thumbnail
这篇文章主要介绍了GAS费能否降低?通缩致使FIL币价上涨,近看1000U,矿工们对Filecoin的高额GAS费深恶痛绝。那什么是GAS费呢?目前消封装算力需要消耗多少FIL的GAS费?那如此之高的费用支撑矿工继续工作的动力又是什么呢?是否GAS费用会不断上涨?下面一起来参考下内容吧 🚀 币安
Thumbnail
本篇文章是介紹解密Gas Fee礦工費:揭露你每筆交易背後的黑暗秘密,包含as Fee礦工費的本質、計算方式、影響,還包括陷阱和詐騙,最後討論一些解決方案和建議。無論您是區塊鏈初學者還是經驗豐富的用戶,理解Gas Fee都是更好地參與區塊鏈生態系統的關鍵。
Thumbnail
本篇文章是介紹解密Gas Fee礦工費:揭露你每筆交易背後的黑暗秘密,包含as Fee礦工費的本質、計算方式、影響,還包括陷阱和詐騙,最後討論一些解決方案和建議。無論您是區塊鏈初學者還是經驗豐富的用戶,理解Gas Fee都是更好地參與區塊鏈生態系統的關鍵。
Thumbnail
Thickness Measurement-ISIS & Vacuum glue mixer(調膠機) 管路配置 Thickness Measurement盤面照 Thickness Measurement進機台端 Vacuum glue mixer機台入口 Vacuum gl
Thumbnail
Thickness Measurement-ISIS & Vacuum glue mixer(調膠機) 管路配置 Thickness Measurement盤面照 Thickness Measurement進機台端 Vacuum glue mixer機台入口 Vacuum gl
Thumbnail
另外想提提之前很夯的X2Y2,對比OPEN SEA,他又更像去中心化交易所, 有著代幣,質押,回饋社區等等去中心化動作,我很喜歡他這次的界面更新,簡潔,方便,重要的是友善華人。 警語講在前面,本篇文章不構成投資建議,自己的資產自己負責,DYOR。 by Kevin111
Thumbnail
另外想提提之前很夯的X2Y2,對比OPEN SEA,他又更像去中心化交易所, 有著代幣,質押,回饋社區等等去中心化動作,我很喜歡他這次的界面更新,簡潔,方便,重要的是友善華人。 警語講在前面,本篇文章不構成投資建議,自己的資產自己負責,DYOR。 by Kevin111
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News