Skip to content

Instantly share code, notes, and snippets.

@kazgoto
Last active November 1, 2020 13:45
Show Gist options
  • Save kazgoto/5633935cd9c6a9396ddf747af2f155d0 to your computer and use it in GitHub Desktop.
Save kazgoto/5633935cd9c6a9396ddf747af2f155d0 to your computer and use it in GitHub Desktop.
Google Drive内、特定のフォルダ以下のファイルとフォルダの共有権限を削除してアクセス制限するバッチスクリプト
// Google Drive内、特定のフォルダ以下のファイルとフォルダの共有権限を削除してアクセス制限する
var TARGET_FOLDERS = [ // ターゲットのフォルダリスト(URLの最後の文字列部分)
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 権限削除したいフォルダ1
'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy' // 権限削除したいフォルダ2
];
var me = Session.getActiveUser().getEmail(); // 自アカウントのメールアドレス
function main() {
Logger.log("実行開始します");
TARGET_FOLDERS.map(function(id) {
var folder = DriveApp.getFolderById(id);
Logger.log('target: ' + folder.getName());
revokePermissionRecursively(folder);
});
Logger.log("実行完了しました");
}
function revokePermission(fileOrFolder) {
if (fileOrFolder.getOwner().getEmail() === me &&
fileOrFolder.getSharingAccess() !== DriveApp.Access.PRIVATE &&
fileOrFolder.getSharingPermission() !== DriveApp.Permission.NONE) {
Logger.log('revoked: "', fileOrFolder.getName() + '" ' + fileOrFolder.getUrl());
fileOrFolder.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);
}
}
function revokePermissionRecursively(folder) {
revokePermission(folder);
var files = folder.searchFiles('"me" in owners');
while (files.hasNext()) {
var file = files.next();
revokePermission(file);
}
var folders = folder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
revokePermissionRecursively(folder);
}
}
@kazgoto
Copy link
Author

kazgoto commented Oct 28, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment