Googleスプレッドシート:編集履歴を自動記録 1
- egachira0250
- 12 時間前
- 読了時間: 3分
チームや業務で使うGoogleスプレッドシートほど、「誰がいつどこを編集したか」が曖昧になりやすいものです。標準機能のバージョン履歴では後から探す手間がかかり、監査やトラブル対応には不十分。
そこでGoogle Apps Script(GAS)を活用し、編集イベントをトリガーにセル単位で変更履歴を自動記録する仕組みを設計します。
■ 動作環境
OS:Windows 10 Home(64ビット)
Chrome:140.0.7339.128(Official Build) (64 ビット)
■ 編集履歴自動記録のアプローチ比較
手法 | メリット | デメリット |
---|---|---|
標準機能 (バージョン履歴) | 導入コスト不要 履歴の復元機能あり | セル単位一覧不可 リアルタイム通知不可 |
GASによるログ記録 | セル単位で即時記録 通知や集計が自在 | 初期設定が必要 一部操作を検知できない |
サードパーティ製アドオン | 高機能なダッシュボード 権限管理と監査機能充実 | コスト発生 導入・学習コスト |
本シリーズでは、導入の手軽さとカスタマイズ性を両立できる「GASによるログ記録」を代表手法として解説していきます。
■ GASでの編集ログ自動記録の基本設計
4-1. 全体フロー
ユーザーがセルを編集
onEdit(e) トリガーが発火
編集情報を取得
「ログ用シート」に1行ずつ追記
4-2. ログ用シートのカラム設計
カラム名 | 説明 |
タイムスタンプ | 変更発生日時(Date型) |
編集者 | Session.getActiveUser() の結果 |
シート名 | 編集が起きたシート名 |
範囲 | A1 記法で編集箇所(例:B3) |
旧値 | 変更前の値(取得できる場合のみ) |
新値 | 変更後の値 |
4-3. 最小コード例
解説:使用する主なクラス・メソッド
onEdit(e):ユーザー操作によるセル編集時に自動実行されるトリガー関数。
e.range:編集されたセルの Range オブジェクト。getA1Notation() で位置を文字列取得。
e.value / e.oldValue:編集後/編集前のセル値。複数セル編集時は oldValue 未定義となる場合がある。
Session.getActiveUser().getEmail():編集者のメールアドレスを取得(Workspace 環境前提)。取得不可時は 'UNKNOWN' を補填。
Sheet.appendRow():指定シートに配列を1行として追記。
■ さいごに
今回は「GASによる変更履歴自動記録」の全体像と基本システム設計を解説しました。次回は、標準機能のバージョン履歴とGASログ記録を比較し、使い分けポイントを詳しく見ていきます。
「どこまでGASでカバーすべき?」を明確にする第2回をお楽しみに!
コメント