2026-01-08

[Google 試算表] 指定欄位輸入時自動補日期 (僅限單一 Sheet)

幫一個朋友解決問題,他說他用 AI 嘗試過了,先說一下他的需求 他是在 Google Sheet 中

在 Column D 輸入任意值,如果同一列 ( Row) 的 B 欄位 ( Column) 如果有值就沒事,如果沒有就填入今天的日期

我順手測試一下,其實沒有很難啊,就簡單紀錄一下..


首先這用簡單公式一定不太好解決,其實也不是不行但是最好的方式就是用 App Script 去解決

這裡面有一個小地方要注意,因為一個文件會有許多 Sheets ,所以我們必須在事件裡面要指令某一個 Sheet Name 

才會作動,不然所有的表格都會出現這效果,主要就是去監聽 OnEdit 事件

程式碼如下:

function onEdit(e) { const TARGET_SHEET_NAME = "投資金額流水"; // 只作用在這個 Sheet const INPUT_COL = 4; // D 欄 const DATE_COL = 2; // B 欄 const range = e.range; const sheet = range.getSheet(); // 1. 限定 Sheet,避免整份文件被誤傷 if (sheet.getName() !== TARGET_SHEET_NAME) return; // 2. 只處理 D 欄,且只接受單一儲存格編輯 if (range.getColumn() !== INPUT_COL || range.getNumRows() > 1) return; const row = range.getRow(); const dateCell = sheet.getRange(row, DATE_COL); // 3. C 有值,且 A 是空白 → 寫入當下日期 if (range.getValue() !== "" && dateCell.getValue() === "") { dateCell.setValue(new Date()); } }


Result:


這類需求看似簡單,但只要牽涉到只寫一次不再變動

公式就一定會踩雷,改用 onEdit 搭配欄位與 Sheet 限定

資料不會亂跑,才是 Google Sheet 正確且可維護的做法。


--

The bug existed in all possible states. Until I ran the code.

如果這篇文章有幫助到您幫我分享一下,讓我有寫下去的動力...