現場を退場する際にGoogleドライブの整理を求められました。
手動で整理するのが面倒だったので作成したスクリプトをメモ…
やりたいこと
・ファイルのオーナー権限を譲渡
・ドライブのゴミ箱を空にする
前提条件
・Google workspaceを利用していること
・譲渡先のアカウントが同じグループに所属していること
ちゃんと検証してないけど、Google wokspaceのアカウントじゃないとオーナー権限を付与するsetOwner()
が動かないっぽい…
コード
サービスからDrive APIを有効にした状態で下記コードを設定
const FOLDER_ID = "オーナ権限を譲渡したいファイルをまとめたフォルダID";
const NEW_OWNER = "オーナ権限の譲渡先のメールアドレス";
const me = Session.getActiveUser().getEmail();
//--------------------------------------------------オーナ権限の譲渡
function changeOwner() {
const folder = DriveApp.getFolderById(FOLDER_ID);
setOwner(folder);
let files = folder.searchFiles('"me" in owners');
//ファイルを変更
while (files.hasNext()) {
let file = files.next();
console.log('file: ', file.getName());
setOwner(file);
}
//フォルダを変更
let folders = folder.getFolders();
while (folders.hasNext()) {
let folder = folders.next();
console.log('folder: ', folder.getName());
setOwner(folder);
}
}
function setOwner(data) {
if (data.getOwner().getEmail() === me) {
data.setOwner(NEW_OWNER);
}
}
//--------------------------------------------------ドライブのゴミ箱内のファイルを完全に削除する
function deleteTrashedFiles() {
let files = DriveApp.getTrashedFiles();
let folders = DriveApp.getTrashedFolders();
deleatFile(files);
deleatFile(folders);
}
function deleatFile (contents){
while(contents.hasNext()) {
let file = contents.next();
let id = file.getId();
Logger.log(file.getName());// 削除されるファイル
Drive.Files.remove(id);
}
}
使い方
定数のFOLDER_ID
、NEW_OWNER
を設定後、下記の関数を実行する
・changeOwner()
実行でオーナー権限譲渡
・ deleteTrashedFiles()
実行でゴミ箱のデータ削除