指定したフォルダに入っているファイルの共有権限を、スプレッドシートに書き出すGoogle Apps Scriptです。権限の棚卸しをしたいときなどにどうぞ。
特にありません。GASの設置および出力先としてスプレッドシートを使用します。
上のメニューにある「スクリプト実行」から「ファイルの共有権限を出力する」を実行します。
アクティブ(今開いている)シートのA1セルを起点に書き出しますので、新しいシートで実行することをおすすめします。
共有権限をチェックしたいフォルダのURLを入力してください。
Googleドライブを開いたときに、アドレスバーに表示される「https://drive.google.com/drive/folders/」で始まるURLです。
しばらく待つとアクティブなシートに書き出されます。
100ファイルでおよそ30秒かかりました。多数のファイルがある場合は6分以内に終わらないかもしれません。
書き出される項目は以下の通りです。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00095/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('ファイルの共有権限を出力する', 'get_file_viewer_and_editor');
// メニューを画面に追加する
menu.addToUi();
}
function get_file_viewer_and_editor() {
// UIの取得
const ui = SpreadsheetApp.getUi()
// アクティブなスプレッドシート、シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 権限をチェックしたい対象のGoogleドライブのURLを入力してもらう
const input = ui.prompt('GoogleドライブフォルダのURLを入力してください', '例:https://drive.google.com/drive/folders/***************', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (input.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// 入力されたテキストを取り出す
const url = input.getResponseText();
// 入力されたフォルダURLからID部分を取得する
const folder_id = url.replace(/^https:.*folders\//, '');
// フォルダ内のファイルを取得する
const files = DriveApp.getFolderById(folder_id).getFiles();
// シート書き込み用の配列を準備
const result = [];
// ファイルの数だけ情報を取得する
for (let i = 0; files.hasNext(); i++) {
let file = files.next(); //ファイルオブジェクトを取得
let filename = file.getName(); //ファイル名を取得
let viewers = file.getViewers(); // 閲覧権限保持者を取得する
let editors = file.getEditors(); // 編集権限保持者を取得する
let file_url = file.getUrl(); // ファイルのURLを取得
let viewers_mail = []; // 閲覧権限保持者のメールアドレス格納用の配列
let editors_mail = []; // 編集権限保持者のメールアドレス格納用の配列
for (let j = 0; j < viewers.length; j++) {
viewers_mail.push(viewers[j].getEmail()); // メールアドレスを取得
}
for (let k = 0; k < editors.length; k++) {
editors_mail.push(editors[k].getEmail()); // メールアドレスを取得
}
result.push([filename, viewers_mail.join('\n'), editors_mail.join('\n'), file_url]); //シート書き込み用の配列に追加
}
// 項目名を追加
result.unshift(['ファイル名', '閲覧権限保持者', '編集権限保持者', 'URL']);
// 書き込む内容に応じた書き込み範囲を定義
const range = sheet.getRange(1, 1, result.length, result[0].length);
// シートへの書き込みを実行
range.setValues(result);
}
Drive Activity APIを利用して、指定フォルダの操作ログを取得するGoogle Apps Scriptです。サボりの監視やセキュリティインシデント発生時の調査などにどうぞ。
ドライブアクティビティから、削除操作のみをメールで通知するGoogle Apps Scriptです。誤操作等でファイルが消されたことに早めに気付きたい時などに。
ファイルの共有権限を他のファイルと揃えてくれるGoogle Apps Scriptです。権限設定って結構めんどくさいですよね。