【Googleドキュメント】Apps Scriptで権限変更通知!所有権譲渡の検知

【Googleドキュメント】Apps Scriptで権限変更通知!所有権譲渡の検知
🛡️ 超解決

Googleドキュメントの所有権が突然変更され、気づかないうちにアクセス権を失ってしまうことがあります。特にチームで共有しているファイルでは、所有権の譲渡が意図せず行われると業務に支障が出かねません。この記事では、Apps Scriptを使って所有権変更を自動検知し、メールで通知する方法を詳しく解説します。

手動で定期的に権限を確認するのは手間がかかりますが、スクリプトを一度設定すれば自動で監視してくれます。Googleドキュメントの所有権変更を検知する仕組みを理解し、簡単に実装できるようになりましょう。

【要点】Apps Scriptで所有権譲渡を自動検知し、メール通知を受け取る方法

  • 時間主導型トリガー: 定期的に権限リストを取得し、所有権の変化をチェックします。
  • File.getOwner()メソッド: ドキュメントの現在の所有者を特定するために使用します。
  • MailApp.sendEmail(): 所有権変更を検知した際に、指定のメールアドレスへ通知します。

ADVERTISEMENT

所有権変更検知の仕組みと必要な準備

Googleドキュメントの所有権は、ファイルのオーナーによって譲渡できます。Apps Scriptでこの変更を検知するには、現在の所有者情報を定期的に取得し、以前の情報と比較します。変更があった場合にメールで通知する仕組みです。

スクリプトを実行するには、以下の準備が必要です。Googleアカウントでログインし、監視したいドキュメントが保存されたGoogle Drive内のフォルダにアクセスできること。また、スクリプトエディタを開けること。

Apps Scriptで所有権変更を検知する手順

ここでは、具体的なスクリプトの作成からトリガー設定までの手順を説明します。

1. スクリプトエディタを開く

  1. Googleドキュメントを開く
    監視したいドキュメントをGoogleドライブから開きます。アドレスバーのURLからファイルIDを控えておくと便利です。
  2. 拡張機能メニューを選択
    メニューバーの「拡張機能」をクリックし、「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。

2. スクリプトコードを記述する

  1. 関数を作成する
    エディタに以下のコードを貼り付けます。この関数は、指定されたドキュメントの現在の所有者を取得し、以前の所有者と比較します。
function checkOwnership() {
  var fileId = 'YOUR_FILE_ID'; // ここに監視したいファイルのIDを入力
  var file = DriveApp.getFileById(fileId);
  var currentOwner = file.getOwner().getEmail();
  
  // 以前の所有者を保存するためのスクリプトプロパティ
  var properties = PropertiesService.getScriptProperties();
  var previousOwner = properties.getProperty('previousOwner');
  
  if (previousOwner && previousOwner !== currentOwner) {
    // 所有権が変更された場合、メール通知
    var recipient = Session.getActiveUser().getEmail();
    var subject = '【権限変更検知】Googleドキュメントの所有権が変更されました';
    var body = 'ファイル: ' + file.getName() + '\n' +
              '新しい所有者: ' + currentOwner + '\n' +
              '以前の所有者: ' + previousOwner;
    MailApp.sendEmail(recipient, subject, body);
  }
  
  // 現在の所有者をプロパティに保存
  properties.setProperty('previousOwner', currentOwner);
}
  1. ファイルIDを設定する
    コード中の「YOUR_FILE_ID」を実際のドキュメントのファイルIDに置き換えます。ファイルIDはURLの「/d/」の後ろ、「/edit」の前の部分です。
  2. プロジェクトを保存する
    上部のフロッピーディスクアイコンをクリックするか、Ctrl+Sで保存します。プロジェクト名は任意で構いません。

3. トリガーを設定する

  1. トリガーアイコンをクリック
    左側のメニューから時計アイコン(トリガー)をクリックします。
  2. トリガーを追加
    右下の「トリガーを追加」ボタンをクリックします。
  3. 実行する関数を選択
    「実行する関数」で「checkOwnership」を選択します。
  4. イベントのソースを選択
    「時間主導型」を選択し、間隔を「1時間おき」や「1日おき」など適切な頻度に設定します。所有権変更の検知には1時間おきでも十分でしょう。
  5. 保存して承認
    「保存」をクリックし、必要な権限を承認します。初回はGoogleアカウントの許可が必要です。

スクリプト使用時の注意点とトラブル対策

メールが届かない場合

MailApp.sendEmail()は1日あたりの送信制限があります(無料アカウントで1日100通)。トリガー間隔が短すぎると制限に達する可能性があります。また、受信者が自分のメールアドレスの場合、迷惑メールフォルダに振り分けられていないか確認してください。

所有権を取得できないとき

スクリプトでgetOwner()を実行するには、スクリプトの実行ユーザーがそのファイルの所有者または編集権限を持っている必要があります。権限が不足している場合はエラーになります。監視するファイルの権限設定を事前に確認してください。

複数のファイルを監視したい場合

上記のコードは1ファイルのみ対応です。複数ファイルを監視するには、フォルダ内のファイルをループで処理するように拡張します。例えば、指定したフォルダ内のすべてのドキュメントを対象にループ処理を行います。

ADVERTISEMENT

手動確認とスクリプト自動化の比較

項目 手動確認 Apps Script自動化
手間 毎回ファイルを開いて確認する必要がある 一度設定すれば自動で監視してくれる
通知速度 自分で気づくまで時間がかかる トリガー間隔によるが、1時間以内に通知可能
拡張性 複数ファイルは目視で確認するしかない スクリプトを修正すれば複数ファイル対応も簡単
エラーリスク 確認漏れが発生しやすい 権限不足や制限に引っかかる可能性がある

まとめ

Googleドキュメントの所有権変更をApps Scriptで検知する仕組みを解説しました。時間主導型トリガーとFile.getOwner()メソッドを組み合わせることで、自動監視とメール通知を実現できます。

設定は数分で完了し、所有権の不正な譲渡や意図しない権限変更をいち早く把握できるようになります。応用として、監視対象をフォルダ単位に拡大したり、変更があった際にチャットに通知するなど、チームの運用に合わせてカスタマイズしてみてください。

ぜひこのスクリプトをテンプレートとして活用し、大切なドキュメントの権限変更を見逃さない体制を整えましょう。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED