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

  • 176
  • 0

幫一個朋友解決問題,他說他用 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 正確且可維護的做法。

--

本文原文首發於個人部落格: [Google 試算表] 指定欄位輸入時自動補日期 (僅限單一 Sheet)

--
 

---

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