Googleスプレッドシート:編集履歴を自動記録 3
- egachira0250
- 4 日前
- 読了時間: 3分
更新日:6 時間前
チームのスプレッドシート運用で必須となる「誰が編集したか」の把握。 Session.getActiveUser()だけでは取れないケースも多く、Workspaceドメイン外や匿名編集では空になることがあります。 本稿では、編集者情報を取得する主な手法3つを比較し、Drive APIでファイル自体の更新者名を取得する代表パターンを初心者向けに解説します。
■ 動作環境
OS:Windows 10 Home(64ビット)
Chrome:140.0.7339.128(Official Build) (64 ビット)
■ 編集者情報取得の3つのアプローチ比較
手法 | メリット | デメリット |
Session.getActiveUser() | コードがシンプル セル編集トリガー内で即時取得可能 | Workspaceドメイン限定 匿名編集や共有範囲外で空になる |
Session.getEffectiveUser() | アドオン実行環境での取得に強み | onEditでは動作せず 特別なアドオン設定が必要 |
Drive API でファイル情報取得 | ファイルのlastModifyingUserを確実に取得 匿名編集も反映 | Advanced Drive サービス有効化が必要 APIの呼び出し回数制限 |
今回は、匿名利用者が編集した時でも名前情報の取得精度があがる「Drive APIでのファイル情報取得」にフォーカスし、 スプレッドシートそのもののメタデータから最新更新者名を取得する手順を詳しく見ていきます。
■ 更新者名を取得する手順
1. Advanced Drive サービスの有効化
スクリプトエディタで「サービス」の「+」マークをクリック
「サービスを追加」ダイアログボックスにて、「Drive API」を選択し、「追加」ボタンを押下

2. コード例
主なクラス・メソッド仕様
Drive.Files.get(fileId, params):Advanced Drive API で指定ファイルのメタデータを取得。fieldsで取得項目を絞り込むことが可能。
File.lastModifyingUser.displayName:最終更新を行ったユーザーの表示名。
File.lastModifyingUser.emailAddress:最終更新ユーザーのメールアドレス。Workspace環境以外でも反映されやすい。
SpreadsheetApp.getActiveSpreadsheet().getId():現在のスプレッドシートのファイル ID を取得。
Sheet.appendRow(rowData):配列を1行としてシートに追記。
Sheet.setFrozenRows(count):ヘッダー行を固定表示に設定。
■ さいごに
今回は、編集者情報を取得する3つのアプローチを比較し、 代表的な「Drive APIでファイルメタデータから更新者名を取得する手法」の実装手順を解説しました。
次回は「値の変化を正確にキャプチャ」のテーマで、より高度なログ設計をお届けします。お楽しみに!
コメント