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
留言分享你的想法!
avatar-img
麟製所
2會員
36內容數
軟體、旅遊分享
麟製所的其他內容
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
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
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
Thumbnail
-課程規劃:五章節,36單元 -課程期間:11/10號中午12點開始 -課程價錢:前30天有募資價錢,會便宜1000多,如果有折扣碼,還可以在打八折,折扣碼需要找我索取,之後就會恢復正式價錢 -課程章節:詳細可以掃圖片中的QR CODE看到 -課程重點:聚焦兩大重點,GAS跟試算表使用與GAS如何
Thumbnail
-課程規劃:五章節,36單元 -課程期間:11/10號中午12點開始 -課程價錢:前30天有募資價錢,會便宜1000多,如果有折扣碼,還可以在打八折,折扣碼需要找我索取,之後就會恢復正式價錢 -課程章節:詳細可以掃圖片中的QR CODE看到 -課程重點:聚焦兩大重點,GAS跟試算表使用與GAS如何
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News