【GAS】Google Driveの共有設定を一括解除するスクリプト|特定ユーザーの権限をまとめて削除

2021年9月3日

Google Driveでファイルを共有していると、いつの間にか多くのファイルが外部ユーザーに共有されてしまい「誰に何を共有しているか把握できない」状態になることがあります。

本記事では、GAS(Google Apps Script)を使って特定ユーザーへの共有設定を一括解除するスクリプトを紹介します。退職者の権限解除やプロジェクト終了時の整理に活用できます。

共有されているファイルを確認する

まず現状を把握するため、特定ユーザーに共有されているファイルを確認します。Google Driveの検索窓に以下を入力して検索します。

sharedwith: メールアドレス
Google Drive共有ファイル検索

スクリプトの作成

Google Apps Script(GAS)を開いて以下のコードを貼り付けます。

function main(){
  // 共有を解除したいユーザーのメールアドレスを設定します
  removeShare("メールアドレス")
}

function removeShare(email){
  // 対象ユーザーが閲覧者または編集者として共有されているファイルを検索
  let files = DriveApp.searchFiles('"'+email+'" in readers and "'+email+'" in writers');
  
  let count = 0;
  while (files.hasNext()) {
    let file = files.next();
    console.log("共有解除: " + file.getName() + " (ID: " + file.getId() + ")");
    file.removeViewer(email);  // 閲覧権限削除
    file.removeEditor(email);  // 編集権限削除
    count++;
  }
  console.log(count + "件の共有設定を解除しました。");
}

スクリプトの動作解説

共有ファイルの検索

DriveApp.searchFiles()でDrive全体から指定したメールアドレスが共有されているファイルを検索します。in readersは閲覧権限、in writersは編集権限を持つファイルを対象とします。

let files = DriveApp.searchFiles('"'+email+'" in readers and "'+email+'" in writers');

検索結果はイテレータとして返されるため、while (files.hasNext())でループ処理します。

権限の削除

file.removeViewer(email);  // 閲覧権限削除
file.removeEditor(email);  // 編集権限削除

removeViewer()で閲覧権限、removeEditor()で編集権限を削除します。両方実行することで確実にアクセスを遮断できます。

実行方法と注意事項

Google スプレッドシートの「拡張機能」→「Apps Script」でスクリプトエディタを開き、上記コードを貼り付けてmain()を実行します。

注意:このスクリプトは各ファイルの共有設定を変更できる権限を持つアカウントで実行する必要があります。他のユーザーが所有するファイルは変更できません。

  • 実行前にconsole.log()のみで対象ファイルを確認することを推奨します
  • 共有解除は元に戻せないため、慎重に実行してください
  • 処理件数が多い場合はGASの6分実行制限に注意してください

DriveAppの詳細は公式ドキュメントをご確認ください。

GAS,Javascript,未分類

Posted by Next-k