2026年11月7日 星期六

【免 Gmail 都能傳大檔!】我用 AI 寫出 Google 隱藏版檔案上傳系統的 4 個驚人發現

在日常職場中,我們經常遇到需要跨單位或向外部客戶收集報告與大檔案的情境。然而,當對方「沒有 Gmail 帳號」,而傳統 Email 夾檔又受限於容量極限時,資料收集過程往往變得極為繁瑣且令人頭痛。
其實,透過 Google Apps Script (GAS) 搭配 AI (例如 AI Studio) 的對話輔助,即使不是程式大師,也能快速打造出一套不需要對方登入 Google 帳號、就能輕鬆上傳檔案的自動化工具!本文將帶你拆解這套系統開發與部署過程中的 4 大核心洞見,看看 AI 如何幫我們開啟輕量自動化工作的無限可能。

核心洞見一:不用大改架構!AI 其實是最好的「功能疊加」程式導師
點子不用一次到位,用 Prompt 逐步疊加完美系統
在運用 AI 開發工具時,許多人常犯的錯誤是想在一開始就給出完美無缺的規格需求。事實上,現代開發思維已轉變成「對話式演進(Iterative Prompting)」。AI Studio 等工具最厲害的地方,在於能即時針對局部程式碼進行精修與補強;如果一開始要求過多功能,反而容易讓 AI 產生幻覺或產生過長中斷的程式碼。
開發這套系統時,最佳策略是先從最基礎的「單純檔案上傳」開始,接著再像堆積木一樣,透過 Prompt 逐步向 AI 疊加實際商用情境:
  1. 帳號密碼管理與紀錄 (Log): 加入使用者帳號密碼驗證,並在後台自動記錄「誰在上傳檔案」。
  2. 檢視內容與複製連結: 讓使用者在前端介面能「查看之前已上傳的檔案內容」,並能一鍵「複製檔案連結」方便回報。
  3. 顯示檔案大小: 補充前端細節,讓介面能清楚標示上傳檔案的大小,提升使用者體驗。
在剛開始釐清需求階段,AI 就像一位經驗豐富的技術顧問,會先幫我們精準定位問題本質:
「針對你的問題,我要理解你的需求是:你單向傳送檔案給客戶,還是你需要客戶上傳檔案給你?這兩個解決方法不同……」

核心洞見二:突破 Google 雲端硬碟牆!讓無 Gmail 客戶也能直接上傳
權限開外掛:跨越帳號牆的資料收集術
有了清晰的需求架構後,下一步就是要解決外部客戶無法存取雲端硬碟的障壁。傳統使用 Google Drive 共享資料夾收集檔案時,系統會強制要求對方登入 Google 帳號,這對非 Gmail 用戶來說是一道極高的門檻。
解決這個痛點的關鍵,在於利用 GAS 將程式部署為 Web App(網路應用程式),並將存取權限設定為「所有人 (Anyone)」。這就像在你的 Google 雲端硬碟外頭,蓋了一間不用出示身分證就能投遞包裹的跨國快捷郵局門市,外部客戶就算在無痕視窗或未登入狀態下,也能順利存取頁面並傳送檔案。
系統底層的資料流轉機制:
  • 前端登入與上傳: 客戶在免登入網頁輸入管理者預先設定好的帳密(例如在後台 Google Sheet 的 使用者帳號 工作頁中,只需新增一列 蔡明和 / delong 即可完成帳號建立),登入後選擇檔案上傳。
  • 雲端寫入: 檔案會自動直連寫入你在 Google Drive 中指定的專屬資料夾。
  • 自動產生 Log 紀錄: 系統同步在後台 Google Sheet 的 上傳記錄 產生 Log,詳細記載「誰、在什麼時候上傳了什麼檔名」,並自動附上對應的雲端檔案連結。

核心洞見三:不可不知的效能陷阱!50MB 的隱藏邊界與替代方案
警惕 50MB 警報!GAS 的 Base64 上傳極限
當系統運作順暢後,我們很容易忽視底層的技術限制。這套輕量系統雖然極為便利,但開發時必須留意其效能邊界,否則遇到大檔案時系統可能會宣告崩潰。
數據與效能限制解析: 本系統的前端傳輸機制,是採用 GAS 將檔案轉換為 Base64 字串進行傳送。這好比把大檔案硬塞進實體信封袋裡傳遞,若單一檔案大小超過 50Mbps (50MB),這種轉換方式極易觸發 Google 的系統超時 (Timeout) 或記憶體限制 (Memory Limit),導致上傳失敗。
對於這項反直覺的邊界限制,AI 不僅能幫忙除錯,更扮演了貼心的技術顧問,主動給出合適的專業替代建議:若評估檔案常態性超過 50MB 限制,應轉為採用如 WeTransfer 等免費的專用大檔傳送服務。
AI 對於大檔案處理的邊界提醒非常關鍵:
「如果你的檔案非常大超過 50Mbps,使用上述的 GAS 轉換 BASE64 的方式上傳,有可能會遇到 Google 的系統超時或記憶體限制而失敗……」

核心洞見四:只要兩組 ID!零基礎部署與權限授權的關鍵點
把工具搬回家:複製副本與雙 ID 綁定法
了解了開發思維與效能邊界後,最後一哩路就是將工具真正落地部署到自己的 Google 帳號中。以下整理了實操時最容易踩坑的 key points,只要跟著步驟做就能順利完成:
  1. Sheet ID 替換: 建立試算表副本後,開啟 Apps Script。擷取試算表網址中 /d/ 後方一直到 /edit 前方的專屬長字串(中間不要包含斜線),貼替換掉程式碼中的 Sheet ID。
  2. 資料夾 ID 替換: 先在自己的 Google 雲端硬碟建立一個名為「檔案上傳區」的資料夾,點進該資料夾後,抓取網址 /folders/ 後方的專屬 ID 進行替換。(貼心警告:絕對不能直接複製範例程式碼中的舊 ID,否則會因存取權限不足導致寫入失敗。)
  3. 後台預先整理: 正式部署前,建議先將 Google Sheet 範例中的測試紀錄(Log)清空,並至 使用者帳號 頁籤依據實務需求新增設定客戶的專屬帳密。
  4. 部署與安心授權流程: 點選「部署」$\rightarrow$「管理部署」,記得將「誰可以存取」設定為「所有人」。首次部署跳出 Google 安全警告時無須緊張,請安心依序點擊:授予存取權 $\rightarrow$ Continue / Go to...(前往不安全頁面) $\rightarrow$ Select All(全選權限) $\rightarrow$ Continue 即可完成授權,最後複製產生的應用程式網址就能公開使用!

結語與思考
透過 Google Apps Script 搭配 AI 的輔助引導,我們不必具備深厚的程式開發背景,就能在短時間內打造出跨越帳號牆、自動化整合 Google Drive 與 Sheet 的輕量級工具。這不僅完美解決了職場上跨單位傳送大檔的痛點,更展現了對話式 AI 工具在個人化工作流改造上的無限潛力。
看完這套自動化上傳系統的打造過程,你不妨也思考一下:在你目前的日常工作流程中,還有哪一個卡關已久的痛點,是只要跟 AI 聊聊天、寫出 GAS 工具就能輕鬆解決的呢?

檔案下載:
彰化一整天_簡易檔案上傳系統


 


2026年10月31日 星期六

不寫爬蟲也能自動抓特價!我如何用 Google 試算表與 AI 打造好市多降價通知神器

美式賣場好市多(Costco)每期的特價優惠總能吸引大批人潮,但對於非每週踩點的會員、或是非會員卻想精準鎖定特定商品的消費者來說,隨時盯著官網刷價格不僅極其繁瑣,還非常容易錯過限時折扣檔期。
為了解決這個生活痛點,我透過 Google 試算表(Google Sheets) 結合 AI 工具(ChatGPT 與 Google AI Studio),打造出一套「每日自動檢查價格變動、降價或特價結束恢復原價時即時發送 Email」的自動化通知系統。最令人驚喜的是,這套系統完全不需要撰寫複雜的 Python 網頁爬蟲。
本文將為你深度拆解這套低程式碼(Low-Code)自動化流程中,最具實用價值與啟發性的四大關鍵洞察。

洞察一:妥協的技術哲學——「公式 + 手動」比硬幹爬蟲更穩固
剛開始構思這個系統時,直覺會想在 Google Apps Script 中撰寫網頁爬蟲程式(Web Scraper),試圖全自動抓取好市多官網上的所有頁面資訊。然而實際測試後發現,官網的網頁結構對於單純的指令腳本極不友善,Apps Script 很難穩定且解析出正確的商品原價與折扣細節。
面對技術瓶頸,我選擇了靈活的「混合自動化模式」(Hybrid Automation):
  • 明確的欄位分工:在 Google 試算表中劃分欄位,商品的「商品原價」與「線上原價」由使用者手動輸入一次(因為商品基準原價通常長期保持固定);而最具時效性的動態欄位「目前價格」,則利用試算表內建的 import 類公式自動擷取官網線上頁面的當前售價。
  • 低維護成本:將原本需要高強度解析 HTML 的工作,簡化為公式比對「目前價格」與基準價的價差。
「不用寫爬蟲、原價自己打上去,只要有特價通知我就夠了!」
專欄點評:許多自動化愛好者容易陷入「100% 自動化」的迷思,認為手動輸入就是不夠高明。但事實證明,適度接受手動維護固定靜態資料,將複雜的網頁解析降級為簡潔公式,系統反而能避開網站改版造成的腳本崩潰,達到極高的穩定度與維護性。

洞察二:把 AI 當雙向協作工程師——從 ChatGPT 靈感到 AI Studio 的精準 Constraint
要讓 AI 產出真正可用且簡潔的程式碼,關鍵在於分工定位與下達明確的「約束條件(Constraint)」:
  1. 階段一:概念驗證(ChatGPT) 先以直白的情境向 ChatGPT 提問:「我想用試算表查詢台灣好市多某一商品是否有特價」,並提供特定商品網址進行可行性評估。ChatGPT 確認了以試算表搭配腳本處理的可行性,幫助建構初步架構。
  2. 階段二:程式精準生成(Google AI Studio) 轉向 Google AI Studio 請求生成 Google Apps Script 腳本。初始生成的程式碼習慣性包含發送 HTTP 請求去爬取網頁的邏輯,這時必須下達精準的提示修正:
「不用寫爬蟲,我已經有使用公式了(透過 import 抓好當前價格)。你只要幫我專注在比對價格異動與發送郵件的邏輯即可。」
AI 收到這項約束後,迅速刪除多餘的爬蟲模組,產出一份結構乾淨、專注於邏輯判斷與 Email 觸發的輕量化腳本。
專欄點評:與 AI 協作時,不要期待 AI 幫你做完全部決策。清晰交代「既有條件」(已用公式抓好價格)與「核心目的」(比對與發信),給予 AI 明確的邊界,才能讓 AI 生成最適解法。

洞察三:Event-Driven 事件驅動通知——只在「改變」時發聲,打造不打擾的自動化
沒有人希望自己的電子信箱每天被「價格未變動」的無意義郵件洗版。這套系統的 Apps Script 採用了「事件驅動(Event-Driven)」機制,系統會記錄並比對上一次檢查的狀態,僅在商品的價格「狀態發生改變」時才觸發寄信通知:
  • 開始特價首次通知:當系統偵測到商品價格低於原價,發送降價喜訊。信件格式清晰包含商品名稱、原價、特價金額、省下的金額與直接購買連結。
【好市多商品價格異動 - 開始特價首次通知】
  • 商品:善存 葉黃素 液態軟膠囊 140 顆
  • 線上原價:1029 元 | 目前特價:829 元(節省 200 元)
  • (信件內附直連購買連結)
  • 特價結束恢復原價通知:當特價檔期結束、商品價格回升時,系統同樣會發出狀態變更通知:
【好市多商品價格異動 - 以下商品特價已結束恢復原價】
  • 桂格 減糖 黑十穀(恢復原價 369 元)
  • 明治 奶油三明治家庭號(恢復原價 359 元)
自動化排程設定
在 Apps Script 的「觸發條件(Triggers)」中,設定為「時間驅動(Time-driven)」,選用「日計時器」,指定每天早上 7 點至 8 點 自動執行。每天晨喚時,系統就已經自動比對完畢並完成回報。
專欄點評:好的自動化系統不只要能運作,更要懂得「不打擾」。狀態改變才通知的思維,能有效避免資訊疲勞,真正提升數位生活品質。

洞察四:邊界思維——理解工具極限,手動排除特殊商品
任何自動化方案都有其適用邊界。在測試過程中,系統也展現出了特定的極限:
  • 特殊標示商品無法自動抓取:官網上部分標示為「獨家特賣」的商品(例如:明治牛奶雪糕等),因為頁面上完全沒有標示公開的線上售價資訊,導致試算表中的 import 公式會回傳錯誤訊息:
"檢查不到價格 / 找不到"
實務排除建議:一旦公式傳回「檢查不到價格 / 找不到」,代表該商品的網頁結構無法被公開抓取。身為使用者,無須硬幹程式,直接將該商品手動從自動化清單中移除即可。
專欄點評:理解工具的極限與邊界條件(Edge Cases),並在邊界外適時以手動干預接管,是確保整體自動化系統穩定運作不崩潰的重要素養。

結尾:四步驟輕鬆複製,開啟你的生活小自動化
想要擁有專屬的好市多降價報喜神器嗎?跟著以下四個步驟即可快速部署:
  1. 建立副本與允許存取:取得試算表範本並複製到個人 Google 雲端硬碟,開啟試算表時,點選上方出現的 「允許存取」,授權試算表向外部網頁擷取資料。
  2. 填寫商品資料與複製公式:填入欲追蹤的 商品名稱、商品連結、商品原價 與 線上原價,並向下拖曳複製 import 公式,使 目前價格 欄位成功帶出當前售價。
  3. 部署 Apps Script 與完成權限審核:
    • 進入點選 擴充功能 > Apps Script,在程式碼中填入你接收通知的 Email。
    • 手動選擇並執行一次 check商品是否折扣 函式。此時系統會彈出權限審核視窗,點選 進階 > 前往不安全視窗 > 勾選全選權限 > 繼續/允許 完成首次授權。
  4. 設定時間驅動觸發器:在 Apps Script 左側選單點選「觸發條件」,新增觸發條件:設定事件來源為 「時間驅動」、類型為 「日計時器」,指定執行函式為 send notify email,時間選擇每日 早上 7 點至 8 點。
簡單幾步,就能打造出完全屬於你的數位生活神隊友!

思考題:在你每天的生活或工作中,還有哪一個重複性高、繁瑣卻極有價值的小動作,可以用這套「AI + 試算表」的思維重新設計一次?不妨今天就動手嘗試吧! 



【免 Gmail 都能傳大檔!】我用 AI 寫出 Google 隱藏版檔案上傳系統的 4 個驚人發現

在日常職場中,我們經常遇到需要跨單位或向外部客戶收集報告與大檔案的情境。然而,當對方「沒有 Gmail 帳號」,而傳統 Email 夾檔又受限於容量極限時,資料收集過程往往變得極為繁瑣且令人頭痛。 其實,透過 Google Apps Script (GAS) 搭配 AI (例如 ...