【Googleドキュメント】Apps Scriptでドキュメント所有者の自動変更!退職者対応

【Googleドキュメント】Apps Scriptでドキュメント所有者の自動変更!退職者対応
🛡️ 超解決

退職者が所有するGoogleドキュメントが大量にあって、一人ひとりの所有権を手動で変更するのは大変な作業です。また、退職後にドキュメントが参照できなくなるリスクも避けたいところです。この記事では、Google Apps Scriptを使い、特定のフォルダ内のドキュメント所有者を一括で自動変更する方法を解説します。スクリプトを実行すれば、わずか数分で所有権の移行を完了できます。

【要点】退職者所有のドキュメントを一括で別のユーザーに所有者変更する方法

  • Apps ScriptのsetOwner()メソッド: ドキュメント所有者をプログラムで変更できます。ループ処理で対象ファイルをまとめて処理します。
  • 特定フォルダ内のファイルを一覧取得: DriveApp.getFolderById()でフォルダを指定し、getFiles()でファイルを取得します。複数フォルダにも対応可能です。
  • スクリプト承認と権限設定: 初回実行時には権限承認画面が表示されます。自分のアカウントと変更先のアカウントの両方で承認が必要な場合もあります。

ADVERTISEMENT

Apps Scriptで所有者変更が可能な仕組み

Googleドキュメントの所有者(Owner)は、ドキュメントの完全な管理権限を持つユーザーです。所有者はファイルの削除や権限変更、共有設定などを自由に行えます。退職者などが所有者である場合、そのアカウントが無効になるとドキュメントにアクセスできなくなる場合があります。対策として、あらかじめ別のアカウントに所有権を移しておくことが有効です。通常は手動で行う作業ですが、Apps Scriptを使えば複数のドキュメントを一括で処理できます。Apps ScriptではFileオブジェクトにsetOwner(email)というメソッドがあり、これを呼び出すことで所有者を指定したメールアドレスに変更できます。ただし、実行者のアカウントが現在の所有者か、もしくは編集者権限以上を持っている必要があります。また、変更先のユーザーが同じGoogle Workspace組織内にいる必要はありませんが、変更先のユーザーがスクリプトを承認している必要があるため、事前に連絡を取り合うとスムーズです。

所有者変更スクリプトを実装する手順

1. 新しいプロジェクトを作成する

  1. Googleドキュメントを開く
    所有権変更の対象となるドキュメントが入っているフォルダに関連する任意のドキュメントを開きます。または、新規のGoogleスプレッドシートを開いても構いません。スクリプトは独立して動作するので、どのドキュメントからでも作成できます。
  2. 拡張機能からスクリプトエディタを起動する
    メニューの「拡張機能」→「Apps Script」をクリックします。新しいタブでApps Scriptのエディタが開きます。プロジェクト名を「所有者変更スクリプト」などに変更すると管理しやすくなります。

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

  1. 対象フォルダのIDを取得する
    Google Driveで対象フォルダを開き、URLの最後の部分(folders/の後の英数字)がフォルダIDです。そのIDをコピーしておきます。
  2. スクリプトエディタにコードを貼り付ける
    以下のコードをコピーして、エディタのコード.gsに貼り付けます。
    function changeDocumentOwner() {
    var folderId = 'ここに対象フォルダのIDを入力';
    var newOwnerEmail = '新しい所有者のメールアドレス';

    var folder = DriveApp.getFolderById(folderId);
    var files = folder.getFiles();
    var count = 0;

    while (files.hasNext()) {
    var file = files.next();
    file.setOwner(newOwnerEmail);
    count++;
    }

    Logger.log('所有者変更完了: ' + count + 'ファイル');
    }

    コード内の folderIdnewOwnerEmail を実際の値に書き換えてください。

  3. スクリプトを保存する
    Ctrl+S(MacならCmd+S)で保存します。プロジェクト名を変更した場合は自動保存されます。

3. スクリプトを実行して承認する

  1. 関数を選択して実行する
    関数のドロップダウンから「changeDocumentOwner」を選択し、再生ボタン(▶)をクリックします。初回実行時には権限承認のダイアログが表示されます。
  2. スクリプトの権限を承認する
    「権限を確認」をクリックし、自分のGoogleアカウントを選択します。「このアプリはGoogleで確認されていません」と表示されたら、詳細を展開して「安全ではないページに移動」を選びます。必要なスコープ(Driveへのアクセスなど)を確認し、「許可」をクリックします。承認後、スクリプトが実行されます。
  3. 実行結果を確認する
    実行が完了すると、ビューの下部に「所有者変更完了: Nファイル」と表示されます。また、各ファイルの所有者が変更されているか、Drive上で確認できます。

スクリプト使用時の注意点とトラブル回避法

所有権変更が反映されない場合

スクリプトを実行しても所有権が変わらない場合、以下の原因が考えられます。まず、実行者のアカウントがそのドキュメントの現在の所有者であるか確認してください。編集中または閲覧者権限では所有者を変更できません。また、新しい所有者のメールアドレスが正しいかどうかも確認しましょう。もし新しい所有者が同じ組織外のユーザーの場合、そのユーザーがスクリプト実行前に一度ドキュメントを開いて招待を受け入れる必要があります。setOwnerメソッドは自動的に招待を送りません。したがって事前に手動で共有設定で編集者権限を付与し、そのユーザーが招待を承認した後にスクリプトを実行すると成功します。

大量ファイル処理でタイムアウトする場合

Apps Scriptには1回の実行時間制限(6分)があります。数百ファイル以上ある場合は、処理が途中でタイムアウトする可能性があります。対策として、スクリプトを分割して実行するか、以下のようにトリガーを使って少しずつ処理する方法もあります。また、ファイル数を減らすためにフォルダをサブフォルダに分けるのも効果的です。

新しい所有者が即座に変更を確認できない場合

所有者変更が完了しても、新しい所有者のDriveに反映されるまでに数分かかることがあります。特に大量ファイルの場合は遅延が発生しやすいです。そのため、直後に慌てて再実行しないようにしてください。また、変更後に古い所有者がアクセスできなくなるわけではありません(権限が編集者にダウングレードされるわけではなく、完全に所有権を失います)。そのため、移行のタイミングには注意が必要です。

ADVERTISEMENT

手動での所有者変更とスクリプトの比較

項目 手動での変更 Apps Scriptでの自動変更
操作速度 1ファイルごとに数クリック必要 一括で最大数百ファイルを数秒で処理
対象ファイルの特定 フォルダを開いてリストから1つずつ選択 フォルダIDを指定するだけで自動取得
エラーのリスク 変更漏れや間違ったファイルの変更が発生しやすい ロジックに沿って正確に処理。ただし権限や招待ミスには注意
実行権限の要件 所有者自身がログインして操作 所有者のアカウントでスクリプトを実行し、権限承認が必要
変更後の確認 即座に反映される 反映に数分かかる場合があり、ログで確認可能

手動変更は少ないファイルなら確実ですが、数十ファイル以上になると非効率です。スクリプトを利用すれば、大量のドキュメントでも短時間で所有権を移せます。ただし、権限や招待周りの事前準備を怠らないことが成功の鍵です。

以上の手順で、Googleドキュメントの所有者を自動的に変更できるようになりました。退職者対応だけでなく、部署異動やプロジェクトの引継ぎなど、さまざまな場面で活用できます。応用として、複数フォルダをループ処理するコードや、特定の条件(例:特定のタイトルを含むファイルだけ)に絞り込む処理も追加できます。ぜひ、実際の環境でスクリプトを試しながら、効率的なドキュメント管理を実現してください。


ADVERTISEMENT

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

超解決 第一編集部

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

SPONSORED