【GAS】GoogleDriveの共有設定を一括で解除する方法
GoogleDriveでファイルの共有機能は便利なんですが、共有しっぱなしにしてしまい、誰に何を共有しているかわからなくなってしまうことはありませんか?
今回は指定したユーザーの共有を解除するスクリプトを紹介します。
共有ファイルの確認
共有されているファイルを確認してみます。確認する方法はGoogleDriveの検索窓に下記を入力して検索します。
sharedwith: メールアドレス
検索結果に共有されているファイルが表示されます。
スクリプトの作成
GASを作成していきます。
function main(){
//削除したいユーザーのメールアドレスを設定します。
removeShare("メールアドレス")
}
function removeShare(email){
let files = DriveApp.searchFiles('"'+email+'" in readers and "'+email+'" in writers' );
while (files.hasNext()) {
let file = files.next();
console.log("共有解除 "+"ファイル名 :"+file.getName() +" ID :"+file.getId())
file.removeViewer(email) //閲覧権限削除
file.removeEditor(email) //編集権限削除
}
}
簡単に説明していきます。7行目のコードはGoogleDriveから特定のファイルを検索しています。
let files = DriveApp.searchFiles('"'+email+'" in readers and "'+email+'" in writers' );
ファイルリストがイテレータで帰ってきますのでWhile文で取り出して、権限を外しています。
while (files.hasNext()) {
let file = files.next();
console.log("共有解除 "+"ファイル名 :"+file.getName() +" ID :"+file.getId())
file.removeViewer(email) //閲覧権限削除
file.removeEditor(email) //編集権限削除
}
実行
「main()」を実行すれば共有設定が解除されます。ただし、各ファイルの共有設定を変更できるアカウントで実行する必要がありますので注意してください。
DriveAppの詳細はこちらからご確認ください。
参考にしていただければ幸いです。自己責任でお願いします。
ディスカッション
コメント一覧
以下のコード参考になりました。
こちらのコードは、削除したい対象者の人数がわりと少ないときに使用するものかと推察致しますがこの理解で宜しいでしょうか。
対象者関係なく、共有ドライブの管理者、コンテンツ管理者以外に共有設定を
初期化する方法を模索しております。
function main(){
//削除したいユーザーのメールアドレスを設定します。
removeShare(“メールアドレス”)
}
function removeShare(email){
let files = DriveApp.searchFiles(‘”‘+email+'” in readers and “‘+email+'” in writers’ );
while (files.hasNext()) {
let file = files.next();
console.log(“共有解除 ”+”ファイル名 :”+file.getName() +” ID :”+file.getId())
file.removeViewer(email) //閲覧権限削除
file.removeEditor(email) //編集権限削除
}
}
コメントありがとうございます。
仰るとおり任意のアカウントの権限を削除するスクリプトになります。
全アカウントの共有を解除するには、「ドライブ内の全ファイルをクローリング」 → 「共有を解除」 を実行する別のスクリプトを作成する必要があります。