top of page

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

  • 執筆者の写真: egachira0250
    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 サービスの有効化


  1. スクリプトエディタで「サービス」の「+」マークをクリック

  2. 「サービスを追加」ダイアログボックスにて、「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でファイルメタデータから更新者名を取得する手法」の実装手順を解説しました。


次回は「値の変化を正確にキャプチャ」のテーマで、より高度なログ設計をお届けします。お楽しみに!



コメント


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

bottom of page