ADVERTISEMENT

【Googleドキュメント】Apps Scriptで権限設定の一括変更!共有設定の自動化

【Googleドキュメント】Apps Scriptで権限設定の一括変更!共有設定の自動化
🛡️ 超解決

Googleドキュメントの共有設定を手動で変更するのは、ファイル数が多いほど手間がかかります。一つひとつ権限を確認しながら編集者を追加したり、閲覧者のアクセスレベルを変更したりする作業は、時間を大きく消費します。Google Apps Scriptを使えば、これらの権限設定を自動化し、一括で変更できるようになります。この記事では、Apps Scriptで共有設定を効率的に変更する具体的手順を解説します。

スクリプトを一度作成すれば、何百ものファイルに対しても数秒で操作を適用できます。手動操作によるヒューマンエラーを防ぎ、正確な権限管理を実現できます。本記事では、基本的なスクリプトの書き方から応用テクニックまで、実践的な内容を紹介します。

【要点】Apps Scriptで権限設定を自動化する3つのポイント

  • DriveAppオブジェクト: ファイルやフォルダにアクセスするための基本APIで、getFileById()やgetFolderById()を使って特定のファイルを取得します。
  • addEditor() / addViewer() メソッド: 特定のユーザーやグループを編集者または閲覧者として追加するメソッドで、複数指定も可能です。
  • setSharing() メソッド: ファイルの共有範囲(公開、リンクを知っている人、特定ユーザーなど)を変更するメソッドで、DomainAccess列挙体を使って設定します。

ADVERTISEMENT

Apps Scriptによる共有設定自動化の仕組み

Google Apps Scriptは、Google Workspaceの各サービス(ドライブ、ドキュメント、スプレッドシートなど)を操作するためのJavaScriptベースのスクリプト環境です。DriveAppという組み込みサービスを利用することで、プログラムからファイルのアクセス権を読み取り、変更できます。具体的には、ファイルのIDを指定してDriveApp.getFileById()でファイルオブジェクトを取得し、そのオブジェクトが持つaddEditor()、addViewer()、removeEditor()などのメソッドを呼び出すことで、権限を一括操作できます。

また、ファイルをフォルダ単位で取得したい場合は、DriveApp.getFolderById()でフォルダを取得し、getFiles()メソッドでフォルダ内の全ファイルを反復処理できます。これにより、特定のフォルダ以下にあるすべてのドキュメントに対して、同じ権限設定を一度に適用できます。スクリプトの実行にはGoogleアカウントによる認可が必要で、初回実行時に権限リクエストが表示されます。スクリプトはGoogleドキュメントの「拡張機能」メニューからスクリプトエディタを開いて作成します。

権限設定を一括変更する具体的な手順

ここでは、複数のドキュメントに対して一括で編集者を追加するスクリプトを例に、手順を解説します。スクリプトを自分の用途に合わせてカスタマイズしてください。

  1. スクリプトエディタを開く
    Googleドキュメントを開き、メニューバーの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
  2. スクリプトを記述する
    エディタに以下のコードを貼り付けます。この例では、特定のフォルダ内のすべてのドキュメントに、指定したメールアドレスのユーザーを編集者として追加します。
    function addEditorsToFolder() {
    var folderId = 'YOUR_FOLDER_ID'; // ターゲットフォルダのID
    var targetEmail = 'user@example.com'; // 追加するユーザーのメール
    var folder = DriveApp.getFolderById(folderId);
    var files = folder.getFiles();
    while (files.hasNext()) {
    var file = files.next();
    file.addEditor(targetEmail);
    }
    }
  3. フォルダIDとメールアドレスを指定する
    コード中のYOUR_FOLDER_IDを実際のフォルダIDに置き換えます。フォルダIDは、ドライブでフォルダを開いたときのURL末尾の英数字です。targetEmailには権限を付与するユーザーのメールアドレスを指定します。
  4. スクリプトを実行する
    エディタ上部の「実行」ボタンをクリックします。初回は認可ダイアログが表示されるので、「許可を確認」→「許可」をクリックして進みます。スクリプトが正常に実行されると、フォルダ内の全ドキュメントに対象ユーザーが編集者として追加されます。
  5. 実行結果を確認する
    スクリプト完了後、対象のドキュメントの共有設定を開き、ユーザーが編集者として追加されていることを確認します。エラーが発生した場合は、実行ログ(表示→ログ)を確認して原因を特定します。

この基本スクリプトを応用すれば、閲覧者の追加や権限の削除、アクセスレベルの変更も可能です。例えば、addEditor()をaddViewer()に変えれば閲覧者の追加ができます。また、removeEditor()を使って特定のユーザーを削除することも簡単です。

権限設定自動化で遭遇しやすい問題と対処法

フォルダIDの指定ミス

フォルダIDを間違えると、スクリプトが正しく動作しません。フォルダIDは、URLの「folders/」の後に続く文字列です。間違ったIDを指定すると、フォルダが見つからないエラーが発生します。IDはコピー&ペーストで正確に指定してください。

スクリプトの実行権限が不足している

スクリプトを実行するには、対象ファイルに対する適切な権限(少なくとも編集権限)が必要です。自分が所有していないファイルや、自分に編集権限がないファイルに対してスクリプトを実行すると、権限エラーが発生します。スクリプトを実行する前に、自分が対象ファイルの編集者または所有者であることを確認してください。

Googleのクォータ制限に引っかかる

Apps Scriptには1日あたりの実行回数や合計実行時間に制限があります。大量のファイル(例えば1万件以上)を一度に処理しようとすると、クォータ制限に達してスクリプトが途中で停止することがあります。その場合は、スクリプトを複数回に分けて実行するか、トリガーを使って時間をずらして実行する方法を検討してください。

スクリプトの認可が通らない

初回実行時の認可ダイアログで、必要なスコープが自動的に要求されます。もしスクリプトが正しいスコープを要求していない場合、権限エラーになります。スクリプトエディタの「認可が必要なサービス」を確認し、DriveAppがリストに含まれていることを確かめてください。問題が解決しない場合は、プロジェクトの「マニフェスト」ファイル(appsscript.json)を編集して明示的にスコープを追加することも可能です。

ADVERTISEMENT

手動操作とApps Scriptによる自動化の比較

操作内容 手動の場合 Apps Script自動化
1ファイルの編集者追加 共有設定からメール入力、約30秒 スクリプト1行で追加、約0.1秒
100ファイルの編集者一括追加 50分以上の手作業 スクリプト実行で数秒
特定フォルダ内の全ファイル権限変更 フォルダ単位での設定変更は不可 フォルダ反復処理で一括変更可能
権限の削除(閲覧者など) 各ファイルの共有設定から削除 removeEditor()/removeViewer()で一括削除

まとめ

Google Apps Scriptを使うことで、Googleドキュメントの権限設定を一括変更し、共有作業を大幅に効率化できます。DriveAppのファイル操作メソッドを組み合わせれば、編集者の追加や削除、アクセスレベルの変更など、さまざまな操作を自動化できます。まずは小さなフォルダでスクリプトをテストし、問題なく動作することを確認した上で、本格的な運用に移しましょう。今後はトリガーを設定して定期的に権限を自動更新するなど、さらに高度な自動化にも挑戦してみてください。


ADVERTISEMENT

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

超解決 第一編集部

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