實作展示|不會寫程式也能搞定!讓 Google Sheet 自動更新文章標題:我如何用 Apps Script 解決我的痛點

一個文案創作者的煩惱

身為一位經常使用 Google Sheet 管理文章產出的內容創作者,我常常會遇到這個小煩惱 —— 我在一開始寫下的文章標題,跟實際上線的文章標題常常會不一樣。有時是根據內容方向的微調,有時是因應時事優化 SEO 關鍵字,標題就這樣悄悄改變了。但 Google Sheet 上的紀錄卻還停留在原本的草稿名。

隨著累積的文章越來越多,這些小錯漏也變得難以追蹤。每次回頭查資料或整理成效時,都得反覆比對到底哪篇是改過的、哪篇沒跟上改名——久而久之,實在容易搞混。

某天,我心裡突然閃過一個念頭:「如果這些標題可以自動更新就好了!」但問題來了——我知道我想要什麼,但完全不知道怎麼做。老實說,我連 Google Sheet 的進階功能都沒摸熟,更別說是寫什麼公式、Apps Script(不問Chat GPT 之前其實小編都不知道有這個),光是看到程式碼就兩眼發黑。

靈感乍現:那就問 ChatGPT 吧!

不過現在 AI 工具那麼強,我靈機一動決定問問 ChatGPT 看看有沒有辦法解決。沒想到還真的有解!這篇文章就是要紀錄我從零開始(完全不會寫程式)怎麼用幾分鐘不到用 Apps Script 完成自動更新文章標題的過程,也讓有同樣困擾的你可以直接照著做。

以防萬一之後忘記,所以我寫了這篇文章:方便大家(或者自己)之後再使用!

延伸閱讀:Chat GPT 是什麼?超詳細解析+新手必看指令懶人包(2025 更新)

先看結果

文章精華總結
  • 痛點:內容創作者常常修改文章標題,但 Google Sheet 上的紀錄沒有跟上,造成標題不一致,增加管理難度與錯誤風險。

  • 解決工具:Google Apps Script —— Google 官方提供的輕量級程式語言,可以與 Google Sheet 整合,實現自動化操作。

  • 實作流程:
    • A 欄放文章標題,C 欄放網址
    • 使用 Apps Script 擷取 <title> 並寫回 A 欄
    • 配合觸發器,讓更新自動定時執行

成果展示:表格中的標題能隨網站自動同步,避免人工遺漏或出錯,大幅提升內容管理效率。

應用場景:適合個人創作者、編輯團隊、SEO 專案管理,特別是在需要維護大量文章清單的情況下。

記住不是要先會 AI 或程式,而是先清楚定義「真正的痛點」,再將需求拆解成小步驟,一個一個解決,最後就能完成看似龐大的任務。

我的痛點:標題更新經常落後於實際狀況

實際上,文章標題的修改在內容創作過程中非常常見。從一開始下標時的靈感標題,到編輯階段根據內容調整,再到發佈前配合時事或 SEO 重新優化標題,每一篇文章可能經歷兩三次甚至更多的變動。

這些改動在網站上可能早已同步完成,但如果用 Google Sheet 表格來管理,標題卻往往還停留在最初的版本。每次要回頭查資料、盤點文章成效或準備後續內容延伸時,都要花額外的時間去對照「這篇文章到底最後用了哪個標題?」、「和 Sheet 上寫的一樣嗎?」

多篇內容的撰寫、校對與上架,還要顧到內容更新與追蹤,這樣反覆確認的工作真的非常浪費時間又容易出錯。

什麼是 Google Apps Script?為什麼能解決這個問題

Google Apps Script(簡稱 GAS)是一套 Google 官方提供的雲端自動化工具。它的語法基於 JavaScript,因此對懂程式的人來說上手非常容易;而對完全沒有寫過程式的使用者來說,也能透過範例快速套用。

最重要的是,它可以直接和 Google 的服務整合,像是 Google Sheet、Google Docs、Google Drive、Gmail,讓這些工具不再只是單純的「文書軟體」,而是變成可以自動幫你處理繁瑣任務的「小助手」。

以這篇文章的案例來說:我希望 Google Sheet 能自動根據網址更新文章標題,這個需求本來得人工複製貼上才能完成,但透過 Apps Script,就能輕鬆做到。

除了抓取 <title>,Apps Script 還能應用在更多場景,例如:

  • 自動寄送提醒信件(例如每天早上寄出報表給自己或團隊)
  • 自動整理資料(例如表單填寫完畢,自動分類並產出報告)
  • 定期排程執行(例如每週更新一次資料庫,或每天備份檔案)

換句話說,Apps Script 就像是 Google Sheet 背後的貼身秘書,把那些你不想每天手動重複的事,交給它來處理。

app scrip

先分析你自己實際工作流程是怎麼做的?

在這個自動化專案之前,我的 Google Sheet 長這樣:

  • A 欄:文章標題
  • B 欄:草稿檔(例如 Google Docs 連結)
  • C 欄:網站正式發佈連結

看起來簡單,但實際使用起來卻問題重重。

過去的手動流程

  1. 在 B 欄寫完草稿 ,之後填上暫定標題
  2. 上架到網站, 調整或修改標題(有時候會改好幾次)
  3. 回到 Google Sheet,手動修改 A 欄標題。

問題在於:第三步經常被忽略或忘記。
當文章數量少的時候還能追得上,但隨著文章越來越多,手動更新就變得既耗時又容易出錯。常常我回頭一看,發現表格裡的標題跟網站上完全不一樣,管理上非常混亂。

新的自動化流程

有了 Apps Script 幫忙後,流程就變得乾淨俐落:

  1. 在 C 欄輸入文章正式上架的網址
  2. 執行 Apps Script(或設定排程讓它自動跑)
  3. Script 會自動抓取該網址的 <title>,並更新到 A 欄

整個流程再也不需要人工比對或修改,只要網址一放上去,標題就會自動同步。對於需要管理大量文章的我來說,這就是省時又安心的最佳解法。

程式碼展示與教學

在理解了需求之後,我真正要做的,就是讓 Google Sheet 能夠自動幫我「讀取 C 欄的網址,擷取 <title>,再寫回 A 欄」。乍聽之下很技術,但其實過程比想像中簡單,因為 Apps Script 已經幫我們準備好了很多工具。

第一步:開啟 Apps Script 編輯器

  1. 在 Google Sheet 上方選單,點 「擴充功能 → App Script」。
  2. 系統會打開一個新分頁,裡面是一個編輯器,看起來有點像簡易版的程式 IDE。
  3. 先不用緊張,把裡面的範例程式碼刪掉,準備貼上我們自己的版本。

第二步:貼上程式碼

以下是我使用的程式碼,已經加上註解,讓你不用有程式背景也能看懂:

function updateTitlesFromWebsite() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const startRow = 2; // 從第 2 列開始
const lastRow = sheet.getLastRow();

for (let row = startRow; row <= lastRow; row++) {
const url = sheet.getRange(row, 3).getValue(); // C 欄:網址
try {
if (!url || typeof url !== ‘string’ || !String(url).startsWith(‘http’)) continue;

const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
const html = response.getContentText();
const match = html.match(/<title.*?>(.*?)<\/title>/i);

if (match && match[1]) {
const pageTitle = match[1].trim();
sheet.getRange(row, 1).setValue(pageTitle); // A 欄更新標題
} else {
sheet.getRange(row, 1).setValue(“⚠️ 找不到標題”);
}
} catch (e) {
sheet.getRange(row, 1).setValue(“❌ 錯誤:” + e.message);
}
}
}

第三步:逐段解釋程式碼

(也可以跳過,直接複製上面的 Code 就好)

  • const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    告訴 Apps Script,我現在要操作的就是這份 Google Sheet。

  • for (let row = startRow; row <= lastRow; row++) { … }
    用迴圈逐列讀取資料,確保每一列的網址都能被處理到。

  • const url = sheet.getRange(row, 3).getValue();
    這裡抓取 C 欄的值,也就是我們的文章網址。

  • UrlFetchApp.fetch(url)
    這一行就是重點!它會把該網址的 HTML 原始碼整個抓下來。

  • html.match(/<title.*?>(.*?)<\/title>/i)
    用正則表達式(Regex)從 HTML 中找到 <title> 標籤的內容。

  • sheet.getRange(row, 1).setValue(pageTitle)
    最後,把擷取到的標題更新回 A 欄,覆蓋原本的值。

第四步:執行測試

  1. 點左上角「儲存」
  2. 在工具列的下拉選單選 updateTitlesFromWebsite
  3. 點「執行」
  4. 第一次執行會跳出權限要求,依照提示授權即可。

執行成功後,你會看到 A 欄的標題自動更新了!(留意:這個設定是覆蓋你舊版的題目喔)

加上觸發器:讓它自動跑

前面我們已經完成了程式碼,只要手動執行一次 updateTitlesFromWebsite( ),Google Sheet 就能自動從網址抓取 <title> 並更新到 A 欄。但如果每次都要自己點「執行」,就少了一點自動化的味道。

幸好,Google Apps Script 提供「觸發器」功能,可以幫我們設定固定時間自動執行。這樣一來,就算你完全不打開表格,它也能在背景自動幫你跑。

步驟一:進入觸發器設定

  1. 打開 Apps Script 編輯器(你剛才貼程式碼的地方)。
  2. 在左側工具列,點擊「⏰ 鐘型圖示」=「觸發條件」。
  3. 點右下角「新增觸發條件」按鈕。

步驟二:選擇要執行的函式

在「新增觸發條件」的視窗中,請依序設定:

  • 要執行的函式:選擇 updateTitlesFromWebsite
  • 選擇部署:保持預設 Head 即可
  • 事件來源:選擇 時間驅動(Time-driven)
  • 事件類型:選擇 週期性時間觸發器
  • 週期:例如「每週」
  • 星期幾:可以挑一個習慣檢查文章的日子,例如「禮拜一」
  • 時間區間:例如「上午 9:00-10:00」

最後點擊「儲存」。

步驟三:完成!讓 Google 幫你定期更新文章標題

設定完成後,你的 Google Sheet 就會在指定時間,自動執行 Apps Script,將 C 欄網址的 <title> 寫回 A 欄。

這代表什麼?

  • 你再也不用擔心表格裡的文章標題落後於網站版本。
  • 管理數十篇、數百篇文章也不再手忙腳亂。
  • 這份表格變成真正的「內容管理儀表板」,隨時保持最新狀態。

小提醒

  • 觸發器可以多種設定:除了「每週」,你也可以選擇「每天」或「每小時」。
  • 第一次可能需要授權:Google 會要求你授權腳本存取權限,確認允許即可。
  • 錯誤提示:如果網址錯誤,A 欄會顯示「找不到標題」或「 錯誤」,方便你回頭檢查。

結語:從需求出發,逐步拆解問題

這次的實作過程,讓我重新體會到一件事:要做到自動化,關鍵其實不是「會不會寫程式」或「會不會用 AI」,而是先搞清楚自己的需求與問題在哪裡。

很多時候,我們遇到的問題看起來很大,例如「如何長期管理上百篇文章的標題?」。對於沒有技術背景的人來說,這種需求一開始會覺得遙不可及。但如果能把它拆分成小問題,就會發現其實可以逐步解決。

在我的案例裡,我不是一次就解決「完整的內容管理系統」,而是先從一個小小的需求開始:讓 Google Sheet 自動更新文章標題。這個小需求被解決後,再去拼接更多的流程,就能慢慢組合成一個更大的解決方案。

因此,如果你也常常被「不會寫程式」這個想法卡住,不妨先退一步,問問自己:「我真正的痛點是什麼?能不能先拆成一個一個小需求?」只要邁出第一步,你會發現,就算沒有技術背景,也能藉由像 Google Apps Script 和 AI 工具 這樣的幫手,把看似複雜的大問題,轉化成可以完成的實用方案。

如果我的文章標題已經在 Google Sheet 裡有內容,Apps Script 會覆蓋掉嗎?

是的,目前的版本會直接用網站 <title> 覆蓋 A 欄的內容,確保標題永遠和網站同步。若你想要保留人工修改過的標題,可以額外加判斷條件。

Google Apps Script 的觸發器能設定多久執行一次?

 你可以自由選擇每天、每週、甚至每小時執行一次。最常見的做法是設定「每週自動更新」,確保 Google Sheet 的標題不會落後於網站狀態。

除了自動更新文章標題,Google Apps Script 還能做什麼?

 Apps Script 不只可以抓取 <title>,還能用來自動寄送 email 報表、整理 Google 表單資料、批次修改文件內容,甚至與其他 API 串接,讓 Google Sheet 變成一個強大的自動化工作中心。

這個方法適合誰?
這個自動化流程特別適合:

  • 部落格作者或內容創作者(經常修改標題)
  • 編輯或行銷團隊(需要多人協作管理文章清單)
  • SEO 專案負責人(需要追蹤標題與關鍵字的一致性)