初心者でもわかるGoogle Apps Script活用のススメ

【コピペで使える】GASでGoogleドライブの共有設定を削除する

GASでGoogleドライブのフォルダやファイルへの共有設定を削除する

今回の記事では、Googleドライブのフォルダやファイルに対して、GASを使ってアクセス権限を付与するやり方をお伝えします。アクセス権限とは、その名の通り、対象のフォルダやファイルにアクセスができる権限を指すのですが、手動で行う場合は共有メニューから設定を行います。

本記事では、その作業をGASを使ってどのようにアクセス権限を削除するのかを学んでいきます。

アクセス権限を取得や付与する方法は下記の記事を参考にしてください。

本記事が役立つターゲット読者

  • GASで一括アクセス権限を変更したい方
  • 自動的にアクセス権限を変更したい方

アクセス権限を付与するコード

本ページでは、アクセス権限を削除するメソッドをご紹介します。

  1. removeCommenter(コメント権限を削除する)
  2. removeCommenters(複数アカウントにコメント権限を削除する)
  3. removeEditor(編集権限を削除する)
  4. removeEditors(複数アカウントに編集権限を削除する)
  5. removeViewer(閲覧権限を削除する)
  6. removeViewers(複数アカウントに閲覧権限を削除する)

アクセス権限を削除するメソッドには上記のように様々なメソッドがあります。

権限のによるできることについては、下記のようになります。
上から権限が強い順に並べてあります。

オーナー権限

すべての権限を有する

オーナー権限にしかできないこと

  • フォルダやファイルの削除
  • オーナー権限の変更
編集権限

削除とオーナー権限の変更以外のすべての権限を有する

編集権限できること

  • フォルダやファイルの閲覧・編集
  • フォルダやファイルの共有権限の変更
  • ファイルのコピー
  • ファイルへのコメント
コメント権限

フォルダやファイルの閲覧とコメントをすることができる権限を有する

コメント権限でできること

  • フォルダやファイルの閲覧
  • オーナーにフォルダやファイルの他の人に共有権限を付与するリクエストを送信
  • ファイルのコピー
  • ファイルへのコメント
閲覧権限

フォルダやファイルの閲覧のみ可能な権限

閲覧権限でできること

  • フォルダやファイルの閲覧
  • オーナーにフォルダやファイルの他の人に共有権限を付与するリクエストを送信
  • ファイルのコピー

上位権限では下位権限でできる権限はすべて持っている

記事で紹介するメソッド一覧

removeCommenter(emailAddress)のサンプルコード

まずはコメント権限を削除するコードです。

引数に入れる値

サンプルコード

//ファイルにコメント権限を削除するコード
function sampleCodeForRemoveCommenterOfFileByEmail() {
  let emailAddress = "admin@for-dummies.net";
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "コメント権限サンプルファイル","サンプルファイル", "text/plain");
  createdFile.removeCommenter(emailAddress);
}

変数の説明

emailAddress = コメント権限を付与するメールアドレス
folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入

上記のサンプルコードでは、Googleドライブ内から「サンプルファイル出力フォルダ」があれば、そのフォルダの中に新しいフォルダ/ファイルを作成して特定のアカウントにコメント権限を削除するようにしてあります。

コードをコピーして利用する際はemailAddressを修正してご利用ください。

removeCommenter(user)のサンプルコード

引数に入れる値

サンプルコード

//Userオブジェクトを使ってファイルにコメント権限を削除するコード
function sampleCodeForRemoveCommenterOfFileByUser() {
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "コメント権限サンプルファイル","サンプルファイル", "text/plain");
  let file = DriveApp.getFileById("16w3ZcseTDFSDqWOQB4ZlJkq9qYfwaRPn02OOJNiPqyQ");
  let viewers = file.getViewers();
  for (let i in viewers) {
    let user = viewers[i];
    createdFile.removeCommenter(user);
  }
}

変数の説明

folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入
file = Userオブジェクトを取得するためのファイル
viewers = fileで指定したファイルの閲覧権限のUserオブジェクト
user = Userオブジェクト

DriveAppのUserクラスオブジェクトを使ってコメント権限を削除するやり方です。
DriveAppでUserクラスオブジェクトを取得するメソッドは下記の通りです。

  1. getEditors(編集権限を持つUserを配列で取得)
  2. getOwner(オーナー権限を持つUserを取得)
  3. getViewers(閲覧権限を持つUserを配列で取得)

removeCommenter(user)では要するに、他のファイルの権限と同じアカウントを対象のファイルのアクセス権限から削除することが得意なメソッドだと言えると思います。

コメント権限を削除する予定のユーザーがコメント権限を持っていないとエラーになりますので、エラーハンドリング(エラー時の処理)を追加しておくといいですね。

removeEditor(emailAddress)のサンプルコード

次に編集権限を削除するコードです。
使い方はコメント権限を付与するremoveCommenter(emailAddress)と全く同じですが、コメント権限以外のアクセス権限については、ファイルだけでなくフォルダからも権限を削除することができます

引数に入れる値

サンプルコード

//フォルダに編集権限を削除するコード
function sampleCodeForRemoveEditorOfFolderByEmail() {
  let emailAddress = "admin@for-dummies.net";
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFolder = outputFolder.createFolder(now + "編集権限サンプルフォルダ");
  createdFolder.removeEditor(emailAddress);
}

//ファイルに編集権限を削除するコード
function sampleCodeForRemoveEditorOfFileByEmail() {
  let emailAddress = "admin@for-dummies.net";
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "編集権限サンプルファイル","サンプルファイル", "text/plain");
  createdFile.removeEditor(emailAddress);
}

変数の説明

emailAddress = 編集権限を付与するメールアドレス
folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入

上記のサンプルコードでは、コメント権限の削除と同じようにGoogleドライブ内から「サンプルファイル出力フォルダ」があれば、そのフォルダの中に新しいフォルダ/ファイルを作成して特定のアカウントに編集権限を削除するようにしてあります。

コードをコピーして利用する際はemailAddressを修正してご利用ください。

removeEditor(user)のサンプルコード

引数に入れる値

サンプルコード

//Userオブジェクトを使ってフォルダに編集権限を削除するコード
function sampleCodeForRemoveEditorOfFolderByUser() {
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFolder = outputFolder.createFolder(now + "編集権限サンプルフォルダ");
  let file = DriveApp.getFileById("16w3ZcseTDFSDqWOQB4ZlJkq9qYfwaRPn02OOJNiPqyQ");
  let editors = file.getEditors();
  for (let i in editors) {
    let user = editors[i];
    createdFolder.removeEditor(user);
  }
}

//Userオブジェクトを使ってファイルに編集権限を削除するコード
function sampleCodeForRemoveEditorOfFileByUser() {
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "編集権限サンプルファイル","サンプルファイル", "text/plain");
  let file = DriveApp.getFileById("16w3ZcseTDFSDqWOQB4ZlJkq9qYfwaRPn02OOJNiPqyQ");
  let editors = file.getEditors();
  for (let i in editors) {
    let user = editors[i];
    createdFile.removeEditor(user);
  }
}

変数の説明

folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入
file = Userオブジェクトを取得するためのファイル
editors = fileで指定したファイルの編集権限のUserオブジェクト
user = Userオブジェクト

removeViewer(emailAddress)のサンプルコード

最後に閲覧権限を削除するコードです。

引数に入れる値

サンプルコード

//フォルダに閲覧権限を削除するコード
function sampleCodeForRemoveViewerOfFolderByEmail() {
  let emailAddress = "admin@for-dummies.net";
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.getFolders();
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFolder = outputFolder.createFolder(now + "閲覧権限サンプルフォルダ");
  createdFolder.removeViewer(emailAddress);
}

//ファイルに閲覧権限を削除するコード
function sampleCodeForRemoveViewerOfFileByEmail() {
  let emailAddress = "admin@for-dummies.net";
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "閲覧権限サンプルファイル","サンプルファイル", "text/plain");
  createdFile.removeViewer(emailAddress);
}

変数の説明

emailAddress = コメント権限を付与するメールアドレス
folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入

上記のサンプルコードでは、Googleドライブ内から「サンプルファイル出力フォルダ」があれば、そのフォルダの中に新しいフォルダ/ファイルを作成して特定のアカウントに閲覧権限を削除するようにしてあります。

コードをコピーして利用する際はemailAddressを修正してご利用ください。

removeViewer(user)のサンプルコード

引数に入れる値

サンプルコード

//Userオブジェクトを使ってフォルダに閲覧権限を削除するコード
function sampleCodeForRemoveViewerOfFolderByUser() {
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFolder = outputFolder.createFolder(now + "閲覧権限サンプルフォルダ");
  let file = DriveApp.getFileById("16w3ZcseTDFSDqWOQB4ZlJkq9qYfwaRPn02OOJNiPqyQ");
  let viewers = file.getViewers();
  for (let i in viewers) {
    let user = viewers[i];
    createdFolder.removeViewer(user);
  }
}

//Userオブジェクトを使ってファイルに閲覧権限を削除するコード
function sampleCodeForRemoveViewerOfFileByUser() {
  let folder = DriveApp.getRootFolder();
  let outputFolders = folder.searchFolders("title = 'サンプルファイル出力フォルダ'");
  let outputFolder = (outputFolders.hasNext()) ? outputFolders.next() : folder.createFolder("サンプルファイル出力フォルダ");
  let now = Utilities.formatDate(new Date(), "JST", "yyyMMddHHmmss");
  let createdFile = outputFolder.createFile(now + "閲覧権限サンプルファイル","サンプルファイル", "text/plain");
  let file = DriveApp.getFileById("16w3ZcseTDFSDqWOQB4ZlJkq9qYfwaRPn02OOJNiPqyQ");
  let viewers = file.getViewers();
  for (let i in viewers) {
    let user = viewers[i];
    createdFile.removeViewer(user);
  }
}

変数の説明

folder = マイドライブを代入
outputFolders = ドライブ内のすべてのフォルダを代入
outputFolder = サンプルファイル出力フォルダを代入(なければフォルダを作成して代入)
now = 現在の時刻をyyyMMddHHmmss形式で代入
createFile = 新しいファイルを作成して代入
createFolder = 新しいフォルダを作成して代入
file = Userオブジェクトを取得するためのファイル
viewers = fileで指定したファイルの閲覧権限のUserオブジェクト
user = Userオブジェクト

まとめ

今回はGASでGoogleドライブ上のフォルダやファイルから共有権限を削除する方法をサンプルコードを使って学んできました。

非常に簡単にできることが理解できたと思いますが、これで複数のフォルダやファイルの編集権限や閲覧権限などを一括で変更することができるようになりましたね。

Exit mobile version