OK,來整理一下今天搞懂的東西。Google App Script。聽起來很複雜,但其實…好像也還好?
每次都在想,為什麼試算表裡面一堆重複的動作,複製、貼上、寄信通知…不能像按個鈕就自己跑完嗎?之前聽人說過 VBA,但那是 Excel 的世界。在 Google Sheet 上,這個問題的答案,好像就是 App Script。
所以 App Script 到底是什麼?
簡單講,它就是一個藏在 Google 全家桶(Google Workspace)裡面的「小祕書」。 喔不是,應該說是讓你「自己打造小祕書」的工具。它用的是一種叫 JavaScript 的網頁程式語言,但先不要被「程式」兩個字嚇到。 老實說,很多時候只是複製貼上一些現成的程式碼,稍微改一下就能動了。
它的主要工作就是,讓不同的 Google 服務可以互相溝通跟自動化。例如:
- 在 Google Sheet 裡面按一個按鈕,就自動寄一封 Email 出去。
- 每天早上八點,自動檢查試算表裡的數據,如果達到某個條件,就發個通知到 Google Chat。
- 有人填完 Google Form 之後,不只把資料寫進試算表,還能自動在 Google Calendar 上建立一個活動。
基本上就是把手動的、重複的、無聊的事情,寫成一個腳本 (Script),讓它自己跑。 聽起來…超讚的吧。
怎麼做?打開那個「程式編輯器」
這東西到底藏在哪?其實就在 Google 試算表裡面。
步驟超簡單:
- 打開任何一個 Google Sheet。
- 點上面選單的「擴充功能」 (Extensions)。
- 選擇「Apps Script」。
然後就會跳出一個新的網頁,長得有點陽春,這就是程式碼編輯器了。 裡面會有一個預設的檔案 `Code.gs` 跟一個空的函式 `function myFunction() { ... }`。所有的魔法都是在這裡發生的。
第一次執行自己寫的腳本時,Google 會跳出一個「要求授權」的畫面。 這很正常,因為你的腳本正要代表「你」去操作你的試算表或 Gmail,所以 Google 得跟你確認一下。 就勇敢按下「允許」吧。
來個實際案例:從試算表讀取資料並寄信
光說不練太虛幻了。來個最常見的例子:假如我在試算表的 A1 儲存格有一個今天的業績目標,我想按一下就把它寄給自己當提醒。
這段程式碼大概會長這樣,直接貼到編輯器裡就行:
function sendGoalReminder() {
// 1. 取得目前正在使用的試算表
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 2. 讀取 A1 儲存格的內容
const goal = sheet.getRange("A1").getValue();
// 3. 準備好你的 email
const recipient = "your-email@example.com"; // 記得換成你自己的 email
const subject = "今日目標提醒!";
const body = "別忘了,今天的目標是:" + goal;
// 4. 寄出去!
MailApp.sendEmail(recipient, subject, body);
}
寫好之後,按一下儲存(那個磁碟片的圖示)。然後在上方選擇 `sendGoalReminder` 這個函式,按下「執行」(Run)。
如果一切順利(也授權了),幾秒鐘後你的信箱就會收到一封信。 這就完成了一個最最基礎的自動化!把手動的「打開 A1 -> 複製數字 -> 打開 Gmail -> 貼上數字 -> 寄信」流程,變成了一個按鈕。
所以…這跟試算表裡的「巨集」或「外掛」有什麼不一樣?
好問題,我自己一開始也搞不清楚。這裡簡單整理一下我的理解。
| 比較項目 | 錄製巨集 (Macros) | 外掛 (Add-ons) | 自己寫 App Script |
|---|---|---|---|
| 這是什麼? | 把你手動操作的步驟「錄」下來,變成一個可以重播的動作。 | 別人寫好的現成工具,你去商店安裝來用。 | 自己動手寫程式,打造完全客製化的功能。 |
| 適合誰? | 完全不會程式,只想把重複的「點擊」動作自動化的人。 | 想解決特定問題,但不想碰程式碼,直接找現成方案的人。 | 不怕看程式碼(或至少不怕複製貼上),需要高度客製化流程的人。 |
| 優點 | 超級無腦,用滑鼠點一點就好。 | 安裝即用,功能通常很完整。 | 彈性最大,想得到幾乎都做得出來,還可以串接外部服務。 |
| 缺點 | 功能非常有限,沒辦法做有邏輯判斷的複雜事情。 | 功能是固定的,沒辦法修改。有些還要錢。 | 需要花一點時間學習跟除錯。 |
有些事要注意:App Script 的限制
聽起來很美好,但它不是萬能的。有幾個「天花板」要先知道,免得做到一半才發現此路不通。
- 執行時間限制:每個腳本單次執行最多只能跑 6 分鐘。 如果你的程式需要跑很久(例如處理幾十萬筆資料),跑到一半就會被強制中斷。付費的 Google Workspace 帳號也一樣是 6 分鐘,這點要注意。
- 每日配額 (Quotas):Google 服務不是讓你無限使用的。例如,用 `MailApp.sendEmail` 這個功能,一般的 Gmail 帳號一天大概只能寄 100 封信。 如果是 UrlFetchApp(用來抓外部網站資料的功能),一天也有限制呼叫次數(免費帳號是 20,000 次)。
- 觸發器限制:你可以設定「觸發器」(Triggers),讓腳本定時自動執行(例如每小時一次)。但這個總執行時間也是有限制的,免費帳號一天總共只能跑 90 分鐘。
所以說,App Script 比較適合處理輕量、快速的自動化任務。太龐大的企業級應用,可能還是要找其他更專業的工具。
在地化應用:不只 Google 全家餐,還能串接 LINE
Google 官方文件給的範例都很「美式」,像是串接 Google Maps 或 AdSense。 但很多台灣的開發者或教學文章,會分享更貼近我們生活的應用。我看過最酷的就是把 App Script 跟 LINE Notify 串起來。
想像一下,試算表裡的庫存低於安全值時,不是寄 Email,而是直接在你的 LINE 群組裡跳出通知:「注意!A 商品庫存只剩 10 件!」。這比 Email 即時多了。 這就是 App Script 搭配 API 串接的威力,它讓自動化的出口不只侷限在 Google 的生態圈裡。
所以,結論是?
我自己覺得,App Script 是一個投資報酬率很高的技能。不用變成程式大神,只要學會基礎的讀取 (`getValue`)、寫入 (`setValue`) 跟呼叫服務 (`MailApp`, `SpreadsheetApp`),就可以解決掉 80% 的日常重複工作。
對於每天都要跟 Google 試算表打交道的人來說,花點時間搞懂它,絕對划算。
你第一個想用 App Script 自動化的煩人任務是什麼?是每天整理報表,還是手動寄送通知信?在下面留言分享看看吧!
