GASを使ってGoogle Drive内のフォルダ、ファイルの権限をチェックする
DevRel/Asia 2020というカンファレンスを企画、推進しています。
アジア9カ国/地域の主催者たちと一緒に行っているのですが、データの管理はGoogle Driveで行っています。基本的に最初のディレクトリに全員書き込み権限ありで追加しているだけなのですが、人の入れ替わりなどもあって、だんだんと管理が煩雑になってきました。
そこで、特定のフォルダ以下の権限状態がどうなっているのかチェックするGoogle Apps Scriptを書いてみました。Drive Permissions AuditorとかWhoHasAccess.com、morimorihoge/google-drive-permission-search: Search Google Drive's permission、DriveCheckerなどがあるっぽいんですが、Google Drive全体がやりたい訳でもないし、お金払うほどでもないし(コミュニティイベントだし)、google-drive-permission-searchは動かないし…。
コードはこんな感じ。フォルダを取得して権限チェックして、フォルダも同じようにチェックして…って感じでたいしたことはしていないです。
function permissionCheker(prefix = null, id = '1mK...AdH') {
// 出力先のシート
const sheet = SpreadsheetApp.getActive().getSheetByName('Files');
// フォルダを取得
const folder = DriveApp.getFolderById(id);
// ファイルだけ取得
const files = folder.getFiles();
// 順番にチェック
while (files.hasNext()) {
writeRow(sheet, prefix, files.next());
}
// 中にあるフォルダを取得
const folders = folder.getFolders();
// 順番にチェック
while (folders.hasNext()) {
// フォルダを取得
const sub = folders.next();
writeRow(sheet, prefix, sub);
// 再帰的に実行
permissionCheker(`${prefix || ""}/${folder.getName()}/${sub.getName()}`, sub.getId());
}
}
function writeRow(sheet, prefix, obj) {
let rowIndex = sheet.getLastRow() + 1;
// フォルダパスを出力
sheet.getRange(rowIndex, 1).setValue(prefix ? `${prefix}/${obj.getName()}` : '');
// ファイル名を出力
sheet.getRange(rowIndex, 2).setValue(obj.getName());
// 権限を持った人たちをリストアップ
const editors = obj.getEditors();
if (editors.length === 0) return;
// 権限を持った人数を出力
sheet.getRange(rowIndex, 3).setValue(editors.length);
// 権限を持った人の名前を出力
sheet.getRange(rowIndex, 4).setValue(editors.map(a => a.getName()).join(","));
}
今回の目的ではとりあえず人数さえ分かっていればだいたい判断ができて、もし削除し忘れた人がいてもスプレッドシートの検索でどうにかなるので、こんな感じで十分でした。
主催者は一覧で管理しているので、権限の付与や剥奪についてもGoogle Apps Scriptでやれば楽そうだなって感じました。
Author And Source
この問題について(GASを使ってGoogle Drive内のフォルダ、ファイルの権限をチェックする), 我々は、より多くの情報をここで見つけました https://qiita.com/goofmint/items/614ab76aaf807a66bf10著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .