【Googleドキュメント】Apps Scriptでフォルダ内Docsの一括権限変更!ガバナンスの自動化

【Googleドキュメント】Apps Scriptでフォルダ内Docsの一括権限変更!ガバナンスの自動化
🛡️ 超解決

フォルダに保存した大量のGoogleドキュメントの共有権限を、一つ一つ手動で変更する作業に時間を取られていませんか。特に複数人で管理する共有フォルダでは、メンバーの追加や離脱のたびに権限を見直す必要があり、非常に手間がかかります。Google Apps Scriptを使えば、この作業を完全に自動化できます。この記事では、特定のフォルダ内にあるすべてのGoogleドキュメントの権限を、スクリプトで一括変更する具体的な手順を解説します。

【要点】Docsの権限をApps Scriptで自動化する方法

  • DriveApp.getFolderById(): フォルダを取得するメソッドです。対象フォルダのIDを指定して、権限を変更するドキュメントのあるフォルダを特定します。
  • getFilesByType(MimeType.GOOGLE_DOCS): フォルダ内のGoogleドキュメントだけを抽出します。他のファイル形式を除外するために必須です。
  • setSharing() または addEditor() / removeEditor(): 各ドキュメントの権限を設定・変更するメソッドです。一括で編集者や閲覧者を追加・削除できます。

ADVERTISEMENT

Apps Scriptでフォルダ内のDocs権限を自動化できること

Google Apps Scriptは、Google Workspaceを自動化するためのスクリプトプラットフォームです。JavaScriptベースのコードを書くことで、ドライブやドキュメント、スプレッドシートなどの操作をプログラムから実行できます。今回のケースでは、DriveAppサービスを使い、特定のフォルダ内にあるすべてのGoogleドキュメントを取得し、それらの共有権限を一括で変更します。例えば、新入社員を全ドキュメントの編集者として追加したり、退社したメンバーを削除したりといった作業を、数秒で完了できます。事前に必要なものは、対象フォルダのIDと、Apps Scriptエディタを開くためのGoogleアカウントのみです。スクリプトはスクリプトエディタから直接実行するほか、トリガーを設定して定期的に自動実行することも可能です。

一括権限変更の具体的な手順

ここからは、実際にApps Scriptを使ってフォルダ内のすべてのGoogleドキュメントの権限を変更する手順を解説します。以下の3つのステップで進めてください。

1. スクリプトエディタを開き、新しいプロジェクトを作成する

  1. 対象のフォルダを開く
    まずは権限を変更したいドキュメントが保存されているフォルダを、Googleドライブ上で開きます。
  2. フォルダのURLからIDを取得する
    ブラウザのアドレスバーに表示されているURLを確認します。URLは「https://drive.google.com/drive/folders/XXXXXXXXXXXXXXX」のような形式です。この「XXXXXXXXXXXXXXX」の部分がフォルダIDです。
  3. Apps Scriptエディタを起動する
    同じフォルダ内の空いている場所で右クリックし、「その他」→「Apps Script」を選択します。または直接「script.google.com」にアクセスして新しいプロジェクトを作成します。

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

スクリプトエディタが開いたら、既定のコード(function myFunction() { })を削除し、以下のコードを貼り付けます。このコードは、指定したフォルダ内のGoogleドキュメントすべての共有権限を変更するサンプルです。

  1. 関数名と変数を設定する
    コードの先頭に「function changePermissions() {」と記述します。関数名は任意ですが、分かりやすい名前を付けます。
  2. フォルダとファイルのイテレータを取得する
    次の行に「var folderId = “YOUR_FOLDER_ID”;」と書き、先ほど取得したフォルダIDをダブルクォーテーションで囲んで代入します。その下に「var folder = DriveApp.getFolderById(folderId);」「var files = folder.getFilesByType(MimeType.GOOGLE_DOCS);」と続けます。
  3. 各ドキュメントに対して権限を変更する
    「while (files.hasNext()) { var doc = files.next(); var docFile = DriveApp.getFileById(doc.getId()); docFile.addEditor(‘neweditor@example.com’); }」と記述します。addEditorの引数には、追加したいユーザーのメールアドレスを指定します。削除する場合はaddEditorではなくremoveEditorを使います。
  4. スクリプトを保存する
    コードが書けたら、Ctrl+S(MacならCmd+S)で保存します。プロジェクト名は任意の名称に変更しても構いません。

3. スクリプトを実行して権限を変更する

  1. 実行ボタンをクリックする
    スクリプトエディタの上部にある▶(実行)ボタンをクリックします。初回実行時には権限の承認画面が表示されますので、「許可を確認」→「許可」と進んでください。
  2. 承認が完了したら再度実行する
    承認が終わるとスクリプトが自動的に実行されます。実行中は「進行中」と表示され、完了すると「実行完了」のログが表示されます。
  3. 結果を確認する
    Googleドライブで対象フォルダ内のドキュメントを開き、共有設定を確認します。新しい編集者が追加されているはずです。

以上で一括権限変更の完了です。必要に応じて、追加・削除するユーザーを配列で管理したり、特定のファイルだけを対象にするなど、コードをカスタマイズしてください。

注意点とよくあるトラブル

権限の承認が必要になること

スクリプトを初めて実行する際は、Drive APIへのアクセス許可を求められます。この承認はそのスクリプトプロジェクトに対して一度だけ行えば済みます。承認を与えると、スクリプトはユーザーに代わってドライブ内のファイルを操作できるようになります。セキュリティ上のリスクを避けるため、信頼できるスクリプトだけに許可を与えてください。

1回の実行で変更できるファイル数に制限があること

Apps Scriptには1日あたりの実行時間やAPI呼び出し回数にクォータ(制限)が設けられています。大量のファイル(数千件)を一気に処理しようとすると、途中でエラーになる場合があります。そのような場合は、スクリプトをバッチ処理するか、処理を分割して数日に分けて実行してください。具体的な制限値はGoogleのドキュメントで確認できます。

間違ったユーザーを追加してしまうリスク

スクリプトは指定された通りに動作するため、誤ったメールアドレスを指定すると、意図しないユーザーに権限が付与される恐れがあります。コードを実行する前に、対象となるファイルや権限の内容を必ず再確認してください。テスト用のフォルダで事前に動作確認することをおすすめします。

削除したはずの権限が元に戻せないこと

removeEditorで権限を削除した場合、その操作は元に戻せません。慎重に進めてください。もし誤って削除してしまった場合、手動で再追加する必要があります。変更前の権限をスプレッドシートに保存しておくなどの対策を取ると安心です。

ADVERTISEMENT

手動変更との比較:自動化のメリット

項目 手動での権限変更 Apps Scriptによる自動化
作業時間(100ファイルの場合) 約30分〜1時間 スクリプト実行は数秒
ミスの発生率 高い(人為的な見落とし) 極めて低い(コード通りの動作)
定期的なメンテナンスの手間 毎回手動で同じ作業が必要 タイマートリガーで自動実行可能
初心者へのハードル 低い(慣れれば誰でも可能) やや高い(コードの知識が必要)

上記の比較からわかるように、ファイル数が多いほど自動化のメリットが大きくなります。特に数十ファイル以上ある場合は、スクリプトの作成時間を考慮しても、自動化の方が明らかに効率的です。

まとめ

Apps Scriptを使えば、フォルダ内のすべてのGoogleドキュメントの権限を、数行のコードで一括変更できます。この記事で紹介した手順を実践すれば、手動で一ファイルずつ権限を変更する手間から解放されます。さらに、スクリプトに条件分岐を加えれば、特定のメールドメインのユーザーだけを追加するなどの高度な制御も可能です。ぜひ、ご自身のフォルダで試してみて、ガバナンスの自動化を実現してください。


ADVERTISEMENT

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

超解決 第一編集部

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

SPONSORED