Google Apps Script 語法入門:常用指令與自動化操作步驟解析

Published on: | Last updated:

欸,你還在手動複製貼上嗎?

哈囉,今天要來聊一個我覺得超酷,但好像很多人不知道或是不敢碰的東西:Google Apps Script,我們通常簡稱 GAS。老實說,我一開始也覺得「蛤?寫程式?不要吧...」,但真的碰了之後才發現,哇,根本是懶人救星!🚀

簡單講,你每天在 Google Sheets、Gmail、Google Docs 上面做的那些重複性動作,像是「把表單 A 的資料複製到表單 B」、「每週一早上寄一封固定的報告信」、「把問卷結果整理成文件」... 這些鳥事,通通可以讓 GAS 幫你自動完成!而且,它是免費的!

所以這篇的重點很簡單:Google Apps Script 沒那麼可怕,只要掌握幾個基本指令,你就能打造出屬於自己的第一個自動化小工具,從此告別無止盡的複製貼上地獄。 😉

一個實際案例:讓 Sheet 自動寄出催繳信

光說不練太虛幻了,我們直接看個例子。想像一下,你是一個社團的總務,每個月都要對著一長串 Google Sheet 名單,找出還沒繳錢的人,然後一個一個複製他們的 Email,再手動寄信提醒他們... 是不是光想就覺得累?

這時候 GAS 就能派上用場了!我們可以寫一小段程式,讓它做到:

  • 每天早上自動檢查 Google Sheet。
  • 如果「繳費狀態」這一欄是「未繳」,而且還沒寄過通知。
  • 就自動抓取該學員的「姓名」和「Email」。
  • 然後用你的 Gmail 帳號,寄出一封客製化的提醒信,信裡還可以自動帶入對方的名字喔!
  • 寄出後,再自動把「通知狀態」改成「已寄出」,避免重複寄送。

你看,整個流程從手動至少要花個十幾二十分鐘(如果人多的話更久),變成完全不用你動手。這就是 GAS 的魔力!是不是很讚!

這就是我們要寫程式的地方:Apps Script 編輯器
這就是我們要寫程式的地方:Apps Script 編輯器

怎麼做?新手入門三步驟

好啦,我知道你可能在想「聽起來很棒,但我真的不會寫程式...」。別怕,我會用最白話的方式帶你走一遍。真的,你只需要知道幾個關鍵字就能開始了。

第一步:打開你的「武器庫」- Apps Script 編輯器

這個東西藏在哪裡呢?很簡單,打開任何一個你想自動化的 Google Sheet,然後在上面的選單找到「擴充功能」 > 「Apps Script」。 點下去,就會跳出一個新的分頁,那個長得有點陽春的介面,就是你的戰場啦!

第二步:認識幾個「咒語」- 常用指令解析

Apps Script 是基於一種叫做 JavaScript 的語言,但你不用學會全部。 我們只要先認識幾個跟 Google Workspace 溝通的「專屬咒語」就好。你可以把這些想像成在跟 Google 大神下指令:

  • SpreadsheetApp:這就是跟 Google Sheet 溝通的起點。想對試算表做任何事,都要先呼叫它。可以把它想成是「試算表大神」。
  • -
  • getActiveSpreadsheet():跟大神說:「我現在正在用的這個試算表檔案」。
  • -
  • getSheetByName('工作表名稱'):跟大神說:「幫我找一個叫做『工作表名稱』的分頁」。
  • -
  • getRange('A1:C10'):跟大神說:「幫我框選出 A1 到 C10 這個範圍的格子」。你也可以用另一種寫法 getRange(起始列, 起始欄, 總列數, 總欄數) 來指定範圍。
  • -
  • getValues():跟大神說:「把這些格子裡面的『值』全部拿出來給我」。它會給你一個二維陣列,聽起來很專業,其實就是一堆資料排排站而已。
  • -
  • setValue('你想寫入的內容'):跟大神說:「幫我在指定的格子裡,寫進這些字」。
  • -
  • GmailApp.sendEmail('收件人', '主旨', '信件內容'):這就是另一個大神「Gmail 大神」的咒語,直接幫你寄信!超好用!

老實說,光是會排列組合上面這幾個指令,你大概就能解決 80% 的 Google Sheet 自動化問題了。真的不騙你。

第三步:組合咒語,完成你的第一個魔法!

我們來把剛剛催繳信的邏輯,用上面的咒語「翻譯」一次。程式碼看起來會像這樣(我加了很多中文註解,讓你更好懂):

function sendReminderEmails() {
  // 1. 取得我們要操作的試算表和工作表
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('10月份繳費名單'); // 記得改成你的工作表名稱

  // 2. 取得所有資料的範圍,這裡假設資料從第2列開始,總共有4欄 (姓名, Email, 繳費狀態, 通知狀態)
  const range = sheet.getRange(2, 1, sheet.getLastRow() - 1, 4);
  const data = range.getValues();

  // 3. 一筆一筆檢查資料
  for (let i = 0; i < data.length; i++) {
    const row = data[i];
    const name = row;
    const email = row;
    const paymentStatus = row;
    const notificationStatus = row;

    // 4. 如果「繳費狀態」是"未繳",而且「通知狀態」是空的,就寄信!
    if (paymentStatus === '未繳' && notificationStatus === '') {
      const subject = `【繳費提醒】${name} 同學,您好`;
      const body = `親愛的 ${name} 同學,\n\n提醒您,本月份的費用尚未繳交喔!\n\n感謝您的配合!`;
      
      // 真正寄信的指令!
      GmailApp.sendEmail(email, subject, body);
      
      // 5. 寄信後,在「通知狀態」那格寫上"已寄出"
      // 注意:陣列是從0開始算,但 getRange 是從1開始算,所以要加1
      sheet.getRange(i + 2, 4).setValue('已寄出');
    }
  }
}

把這段程式碼貼到你的 Apps Script 編輯器,存檔。然後手動按一下上面的「▷ 執行」按鈕。第一次執行時,Google 會跳出來問你一堆授權,這是正常的,因為你要授權給這個程式去讀取你的試算表和用你的 Gmail 寄信。勇敢地按下「允許」就對了! 跑完之後,去你的「寄件備份」看看,是不是魔法就發生了?

我們的自動化流程示意圖
我們的自動化流程示意圖

不只是 Sheet,它還能做更多!

學會了基本功,你會發現一片新大陸!GAS 不只能搞 Google Sheets,它幾乎可以串通所有的 Google 服務。

  • Google Docs:自動生成報告。你可以寫一個 GAS,把 Google Sheet 裡的數據或圖表,自動填入一個 Google Doc 範本,變成一份每週的業績報告。
  • Google Forms:客製化回覆。有人填完問卷後,不只寄一封制式的「感謝填寫」,你可以根據他的答案,用 GAS 判斷並寄給他不同的後續資訊。
  • Google Calendar:自動新增行程。例如,在 Sheet 裡規劃好一系列活動的時間地點後,一鍵讓 GAS 幫你把所有活動都新增到 Google Calendar 上。
  • 建立簡單的網頁應用:你甚至可以用 GAS 做出一個簡單的網頁,讓沒有 Google 帳號的人也可以跟你互動,或是當作一個簡單的資料查詢頁面。

可能性真的很多,完全取決於你的想像力(還有解決懶人問題的決心 😂)。

跟 Zapier 或 Make 這種工具有什麼不一樣?

你可能會問,市面上不是有很多像 Zapier、Make (以前的 Integromat) 這種「無程式碼」(No-code) 的自動化工具嗎?它們跟 GAS 有什麼差別?這問題問得很好,我自己也常用,所以來做個簡單比較。

比較項目 Google Apps Script (GAS) Zapier / Make
成本 基本上是免費的!除非你用到超大量的 API 呼叫,但一般人用不太到那程度。 有免費方案,但功能和執行次數都有限。複雜一點的流程或用量一大,就得付月費了。
彈性 超高!你想得到的邏輯,只要寫得出來,幾乎都能實現。可以做很細緻的資料處理。 比較受限。你只能用它「預設好」的觸發 (Trigger) 和動作 (Action)。 有時候想做個簡單的判斷,就得繞一大圈或升級方案。
學習曲線 需要懂一點點程式邏輯,至少要看得懂上面那幾行咒語。對完全沒碰過程式的人來說,一開始會有點痛。 非常低!幾乎就是用滑鼠點一點、連連看,很直覺。 對非技術背景的人超級友善。
整合範圍 主要強在 Google 自家生態系 (Workspace) 內的整合。要跟外部工具(例如 Slack、Trello)溝通,會比較麻煩一點。 強項就是跨平台整合!可以輕鬆串接幾千種不同的 App,從臉書、IG 到各種專案管理工具。

我自己是覺得,如果你的需求主要圍繞在 Google 文件、試算表、Gmail 之間,而且想要做一些比較精細的客製化邏輯,那 GAS 絕對是首選,CP 值爆表。但如果你的需求是需要串接很多非 Google 的外部服務,而且你一秒鐘都不想看到程式碼,那 Zapier 或 Make 會是比較快、比較省事的選擇。

有趣的是,這兩者也可以結合。例如,用 Zapier 接收一個外部事件,然後觸發一段 GAS 來做複雜的 Google Sheet 處理。

新手一定會踩的坑(我都幫你踩過了)

寫程式最煩的就是除錯了,尤其對新手。這裡列出幾個我剛開始時,浪費最多時間的笨問題,希望能幫你省點力氣:

  1. 大小寫、全形半形打錯字:這是 90% 新手錯誤的來源!`SpreadsheetApp` 你寫成 `spreadsheetApp` 或 `SpreadSheetApp` 就是不行。程式碼很笨,一個字都不能錯。
  2. 忘記授權或權限不夠:第一次執行一定要記得點「允許」。有時候你複製別人的程式碼,它需要用到你沒開的服務(例如他用了 Google Drive 但你沒開),也會出錯。這時候就要去編輯器裡的「服務」那邊手動把它加上去。
  3. 陣列的 index 從 0 開始,但 Range 從 1 開始:這超煩!用 getValues() 拿出來的資料,第一筆的編號是 `[0]`,但你要寫回儲存格用 `getRange(1,1)` 時,第一格卻是 `(1,1)`。常常會在這裡搞混,導致資料寫錯位置。
  4. 超過執行時間限制:Google 為了防止伺服器被濫用,每個 GAS 程式單次執行的時間上限是 6 分鐘(免費帳號)。 如果你要處理上萬筆資料,很容易就超時。這時候就需要把程式碼寫得更有效率,例如用「批次處理」的方式,一次讀取所有資料、處理完、再一次寫入,而不是讀一筆、寫一筆。
  5. 搞不懂官方文件:說真的,Google 的官方文件雖然最準確,但寫得像字典一樣,對新手不太友善。 這時候我會建議多參考一些台灣開發者的教學文章或影片,像是 iT 邦幫忙上面就有很多實戰分享,他們通常會用更貼近實際案例的方式來講解,會好懂很多。
左邊是手動地獄,右邊是自動化天堂
左邊是手動地獄,右邊是自動化天堂

結語:你的第一個自動化任務是什麼?

好啦,不知不覺也聊了這麼多。希望你看完之後,對 Google Apps Script 不再那麼害怕,反而有點躍躍欲試。它就像是你在 Google Workspace 裡的一根免費魔法棒,雖然一開始要念對咒語有點挑戰,但一旦成功施法,帶來的便利性絕對會讓你上癮。

從最簡單的「自動複製貼上」開始,踏出你的第一步吧!相信我,當你成功讓電腦為你工作,而你去泡咖啡的那一刻,成就感真的超爆棚的!

現在換你啦!你工作或生活中有什麼一直手動處理的煩人小事嗎?你第一個想用 Apps Script 來自動化的任務是什麼?在下面留言分享吧!搞不好你的點子可以啟發別人喔!👇

Related to this topic:

Comments

  1. Guest 2025-11-19 Reply
    我還記得之前在公司搞那些重複性雜務,頭很痛。自從發現 Google Apps Script 這東西,其實很多瑣事就直接交給它處理了,像自動寄信啦,表單整理資料什麼的,就不用一直重複點來點去。有時候覺得,不寫 script 的時候整天像在玩舊時代的遊戲,一直土法煉鋼。但真的用下去之後,你會發現效率...呃,好像直接拉高超多。有些細節甚至都不用怎麼管,腳本丟著讓它跑。
撥打專線 LINE免費通話