top of page

Googleスプレッドシート:編集履歴を自動記録 2

  • 執筆者の写真: egachira0250
    egachira0250
  • 31 分前
  • 読了時間: 3分

チーム運用のスプレッドシートで「いつ誰が編集したか」を自動記録するには、GASのトリガー選定が最重要です。実際には複数のトリガーがあり、それぞれ取得できる情報や動作タイミング、権限の要件が異なります。


本稿では、代表的なトリガー手法を比較し、要件に合う最適な選び方と基本実装パターンを解説します。



■ 動作環境

OS:Windows 10 Home(64ビット)

Chrome:140.0.7339.128(Official Build) (64 ビット)



編集ログ記録に使える主なトリガー比較

Google Apps Scriptには大きく分けて次の4種類のトリガーがあります。

それぞれの特徴とログ記録への適性を見ていきましょう。

トリガー形式

主な用途

メリット

デメリット

onEdit (単純トリガー)

ユーザー手動編集の即時検知

設定不要で即時発火;基本的な編集ログに対応

インストール不要の代わりに権限制限;フォーム編集を拾わない

onChange (単純トリガー)

シート構造変更全般の検知

シート追加・コピー・削除など幅広いイベントを検知

セル単位の旧値・新値を取得しにくい

onFormSubmit (単純トリガー)

フォーム送信時のログ

フォーム経由の入力を正確にキャッチ

フォーム以外の編集を拾わない

インストール型トリガー

onEdit/onChange の拡張版

高権限で実行可能;複数ユーザー環境でも安定動作

手動設定が必要;スコープ承認を都度クリア

このように、編集ログの要件(セル単位か構造変更もか、フォーム編集もか、利用権限環境など)によってベストなトリガーが変わります。 まずは要件を整理し、次の手順で選定フローを進めましょう。



要件に合わせたトリガー選定フロー

編集ログでよくある要件を例に、最適なトリガーを選ぶ手順は以下のとおりです。


  1. セル単位の旧値・新値が必要か?

    • 必要 → onEdit/インストール型 onEdit

    • 不要 → onChange もしくは 時間駆動トリガー

  2. フォーム入力も含めたいか?

    • 含めたい → onFormSubmit + onEdit

    • 含めない → onEdit のみ

  3. 組織全員の編集者を正確に取得できる環境か?

    • Workspace 環境 → インストール型トリガー推奨

    • 個人アカウント共有 → 単純トリガーでも可

  4. クォータ制限・実行回数上限を回避したいか?

    • 回避したい → バッチ処理用の時間駆動トリガーを併用


これで「誰が」「いつ」「何を」取得すべきかに合わせたトリガー選定がスムーズになります。



代表パターン:インストール型トリガー

ここではもっとも汎用的に使われる「インストール型トリガー」の設定手順とサンプルコードを示します。セル単位で旧値・新値をログ用シートに記録する最小構成です。

主なクラス・メソッド仕様


  • onEditTrigger(e):インストール型トリガーで編集イベントを受け取る

  • e.range.getA1Notation():編集セルの位置を文字列(例:"B4")で取得

  • e.oldValue / e.value:編集前/編集後の値(複数セル編集時は未定義になる場合あり)

  • Session.getActiveUser().getEmail():編集者メールを取得(Workspace環境前提)

  • Sheet.appendRow(row):配列を1行ずつシートに追記



■ さいごに

今回は編集ログ記録の“肝”となるトリガー選定フローと、代表パターンであるインストール型トリガーの基本実装を紹介しました。 次回は「編集者情報の取得と制限」にフォーカスし、Workspace環境や匿名編集時のフォールバック設計を詳しく解説します。お楽しみに!



コメント


©2020 by Excelノウハウの備忘録♪。Wix.com で作成されました。

bottom of page