見出し画像

【onEdit(e)入門 #2】eの中身をログで見てみよう

〜「どのセルが、どう変わったか?」はeに全部入ってる〜


Googleスプレッドシートで「セルを編集したとき」に自動で動く onEdit(e) 関数。

その引数として渡される e(イベントオブジェクト)は、ただの1文字だけど、中身はとっても重要です。

今回の記事では、この「eの中」に何が入っているのか、実際にログで確認しながらひとつひとつ丁寧に解説していきます。



🔧 テスト用スクリプト:eをまるごと見てみよう

function onEdit(e) {
  Logger.log(JSON.stringify(e, null, 2));
}

このコードをスプレッドシートの Apps Script に貼って、
任意のセルを編集してみましょう。

その後「表示 → ログ」で出力を確認します。


🔍 実際のログ例(セルC5に「完了」と入力)

{
  "authMode": "LIMITED",
  "range": {
    "columnStart": 3,
    "columnEnd": 3,
    "rowStart": 5,
    "rowEnd": 5,
    "getA1Notation": "C5",
    "getSheet": {}
  },
  "source": {},
  "value": "完了",
  "oldValue": "作業中"
}

🧹 「e」の中身をパーツごとに解説!

🧷 e.authMode(認証モード)

  • :"LIMITED"

  • 意味:この関数が「限定的な権限」で実行された、ということ

  • 補足:onEditでは常に"LIMITED"。普段は気にしなくてOK。


🧷 e.range(編集されたセルの情報)

✅ この中に入っているのは…

プロパティ 例 意味 rowStart / rowEnd 5 編集された行番号 columnStart / columnEnd 3 編集された列番号 getA1Notation "C5" 編集されたセルのA1形式の番地 getSheet() {} 編集されたセルの属するシート

🎯 よく使うメソッド

e.range.getRow()        // 5
e.range.getColumn()     // 3
e.range.getA1Notation() // "C5"
e.range.getSheet().getName() // "シート1"

🧷 e.value(編集後の値)

  • :"完了"

  • 意味:セルに新しく入力された値

  • よくある用途

    • 特定の文字が入力されたときだけ処理したいとき

    • if (e.value === "完了") などで条件判定する


🧷 e.oldValue(編集前の値)

  • :"作業中"(またはundefined)

  • 注意:元のセルが空白だった場合はundefined

  • 用途例

    1. if (e.oldValue !== e.value) { // 値が変わったときだけ処理 }


🧷 e.source(Spreadsheet全体)

  • :Spreadsheetオブジェクト(SpreadsheetApp.getActiveSpreadsheet() と同じ)

  • 用途:必要に応じて Spreadsheet 全体を操作したいときに使える

    1. const ss = e.source; const sheet = ss.getSheetByName("タスク一覧");


📌 図でまとめるとこう!

e
├─ authMode        : "LIMITED"
├─ range
│   ├─ rowStart      : 5
│   ├─ columnStart   : 3
│   ├─ getA1Notation : "C5"
│   └─ getSheet()    → シート情報
├─ value           : "完了"
├─ oldValue        : "作業中"
└─ source          → Spreadsheet全体

💡 よく使うパターン集

条件分岐 書き方 説明 C列だけ反応させたい e.range.getColumn() === 3 A=1, B=2, C=3… 「完了」と入力されたとき e.value === "完了" 入力値の比較 値が変わったときだけ実行 e.oldValue !== e.value 変更検知 「タスク一覧」シートだけ実行 e.range.getSheet().getName() === "タスク一覧" シート名による分岐


✅ まとめ

  • eオブジェクトには、編集イベントに関するあらゆる情報が入っている

  • 位置(行・列・番地)・内容(新旧の値)・シート名などを取得できる

  • Logger.log(JSON.stringify(e, null, 2))で構造をしっかり観察しよう!


🖜️ 次回(#3)予告:「特定の列や値にだけ反応させるには?」

今回見た e.range や e.value を使って、次回は

📌「A列だけ」
📌「“完了”と入力されたときだけ」
📌「複数条件を組み合わせて」

といった実用的な 条件付きトリガーの書き方 を紹介していきます。
この記事が「わかりやすかった」「役に立ちそう」と思ったら、 スキ♡やフォローしていただけると励みになります!

次回も、ノンプログラマーでも使えるGASのコツをお届けしていきます!


いいなと思ったら応援しよう!

毎日をちょっとラクにするGASの話 応援ありがとうございます!いただいたチップは、学習代として、次の記事づくりのエネルギーにさせていただきます☕✍️ これからも「毎日をちょっとラクにするGAS術」を発信していきます!