GASで共有ドライブの権限をスマートに管理する方法

共有ドライブの権限って毎回変更するのに手間がかかってしまうんだよね…。何か良い方法はないのかな?
猫男
猫男
catman
catman
そんな時こそGASを使えば良いんだ。GASなら共有ドライブの権限をスムーズに管理できるよう。catmanが教えてあげよう。

GASで共有ドライブの権限を確認する基本

まずはGASを使ってGoogleドライブを操作するための基本を理解しておこう。

GASでドライブサービスを利用する準備

GASでGoogleドライブの共有ドライブを操作するには、まずドライブサービスを有効にする必要がある。

以下のコードでドライブサービスを使用する準備が整う。

function enableDriveService() {
  const folder = DriveApp.getRootFolder();
} 

DriveAppはGASでGoogleドライブの操作を可能にするクラスで、getRootFolder()はルートのフォルダを取得するためのメソッドだ。

共有ドライブの権限を確認

共有ドライブの権限を確認することが、次に必要なステップとなる。

スクリプトを活用して、フォルダ内のユーザーの権限を確認できる。

function checkPermissions(folderId) {
  const folder = DriveApp.getFolderById(folderId);
  const editors = folder.getEditors();
  editors.forEach(editor => {
    Logger.log(editor.getEmail());
  });
} 

getFolderById(folderId)は指定のIDを持つフォルダを取得し、getEditors()はそのフォルダを編集可能なユーザーを取得するメソッドだ。ユーザーごとの権限をログで確認できる。

GASで共有ドライブの権限を更新する方法

確認するだけでなく、必要に応じて権限の変更も可能だ。

新しい権限を追加する

新しいメンバーに編集権限を付与する場合のコードは以下の通り。

function addEditor(folderId, emailAddress) {
  const folder = DriveApp.getFolderById(folderId);
  folder.addEditor(emailAddress);
} 

addEditor(emailAddress)は指定したメールアドレスのユーザーに編集権限を追加するメソッドだ。

権限を削除する

不要になった権限は削除しよう。

function removeEditor(folderId, emailAddress) {
  const folder = DriveApp.getFolderById(folderId);
  folder.removeEditor(emailAddress);
} 

removeEditor(emailAddress)は、指定したメールアドレスのユーザーの編集権限を取り除くメソッドだ。

こうやってGASを使って共有ドライブの権限を変更できるんだね!とても便利そう。
猫男
猫男

 

練習問題

GASを使って、特定のフォルダ内のすべてのファイルを表示し、その編集者数をログに記録するコードを書け。

 

解答・解説

function listFilesAndEditors(folderId) {
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    Logger.log('File: ' + file.getName());
    const editors = file.getEditors();
    Logger.log('Editors count: ' + editors.length);
  }
} 

このスクリプトでは、getFolderById(folderId)でフォルダを取得し、getFiles()でその中のファイル一覧を取得する。

hasNext()next()を活用して全てのファイルを巡回し、ファイル名をログに出力する。さらに、getEditors()で編集者を取得し、その数をログに記録する。