ドライブ内のファイル・フォルダの共有範囲を設定する方法~getSharingAccess , setSharing~【GAS】
Googleドライブ内のファイル・フォルダには共有範囲が設定されています。
例えば、以下のような形ですね。
これらのアクセス権限は、セキュリティに直結しますので、「リンクを知っている全員」などになってしまうと誰でも見れる状態ですので、セキュリティ的にはとても危ない状態です。
でも、どのファイルが危ない設定になっているかなんて全部見るわけにもいきませんし、探すのが大変です。
そんな時にGASの出番です。
この記事では、GASを使用して、フォルダ・ファイルの共有範囲を取得、更新する方法を紹介します。
実際に使えるコードで、私がテストしていますので、ぜひ最後までみて身につけていただければと思います!
目次(クリックで読みたい部分にジャンプできます)
ファイル・フォルダの共有範囲設定
では、ファイル・フォルダの共有範囲を設定しよう!
と、その前に前提知識を入れておく必要があります。
ドライブ内のフォルダやファイルは、ユーザーごとだけでなく、5段階で設けられている共有範囲が設定できます。
この5段階の共有範囲をしようすることで、GASからまとめて権限を付与することができます。
5段階の共有範囲
ANYONE
インターネット上の誰もが検索してアクセスできる。
ANYONE_WITH_LINK
リンクを知っている全員がアクセスできる。
DOMAIN
ドメイン内の誰もが検索してアクセスできる。
DOMAIN_WITH_LINK
リンクを知っているドメイン内の全員がアクセスできる。
PRIVATE
許可されたユーザーのみがアクセスできる
これら5つの共有範囲をGASで操作することによって、全体のアクセス制限をすることができます。
デフォルトでは、フォルダやファイルの作成時はPRIVATE、つまり許可されたユーザーのみがアクセスできる状態になっています。
DOMAIN および 、 DOMAIN_WITH_LINK はGoogle Work Space を使用している組織でのみ使用可能です。
ドメイン内のみのアクセスに制限するというものです。
ANYONE および、 ANYONE_WITH_LINK ではユーザーはサインインをせずにアクセスをすることが可能です。
共有範囲を取得、共有権限の取得をする
では、ここまで共有範囲の種類について紹介していきましたので、これをもとに「共有範囲」「共有権限」を取得して見ましょう。
使用するメソッドは以下です。
共有範囲、共有権限を取得するメソッド
getSharingAccess()
共有範囲を取得する
getSharingPermission()
共有範囲の権限を取得する
これらのメソッドは、それぞれ「フォルダー」「ファイル」どちらにも使用することができます。
では、実際に共有範囲の情報、共有権限の情報を取得してみるとします。
【コード例】共有範囲、共有権限の取得
特定のフォルダーIDやファイルIDに対して、共有範囲の取得や権限の取得を行います。
function getFolderAdmin (){
const folderId = "*********";
const folder = DriveApp.getFolderById(folderId);
console.log(folder.getSharingAccess().toString());//共有範囲
console.log(folder.getSharingPermission().toString());//権限
const fileId = "************";//ファイルID
const file = DriveApp.getFileById(fileId);
console.log(file.getSharingAccess().toString());//共有範囲
console.log(file.getSharingPermission().toString());//権限
}
この例では、ID指定したフォルダ、ファイルの共有範囲、権限を出力しています。
先ほどの5段階の共有範囲から当てはめて使用してください。
フォルダ・ファイルの共有範囲の設定
では、今度はフォルダ・ファイルに対して共有範囲を設定していく方法を紹介していきます。
共有範囲を設定するメソッドは以下です。
共有範囲を設定するメソッド
setSharing(accessType , permissionType)
共有範囲とその権限を設定する
setSharingメソッドは、引数に「共有範囲」と「権限」を指定します。
こちらも取得する時と同様、フォルダー、ファイルどちらにも適用することができます。
具体的なメソッドの使用方法は以下です。
メソッドの使用方法
Folder オブジェクト .setSaring( 共有範囲 , 権限 )
Fileオブジェクト .setSharing( 共有範囲 , 権限 )
引数の共有範囲にはEnum Accessのいずれかのメンバーを。
権限は、Enum Permission のいずれかのメンバーを指定します。
では、実際に使って見ましょう!
【コード例】共有範囲、共有権限の設定
フォルダとファイルに対して、権限を設定しています。
function setFolderAdmin (){
const folderId = "*********";
const folder = DriveApp.getFolderById(folderId);
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);//フォルダーについて、誰もが閲覧可能になる。
const fileId = "************";//ファイルID
const file = DriveApp.getFileById(fileId);
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK,DriveApp.Permission.COMMENT);//ファイルについて、リンクを知っている全員がコメント可にする。
}
まとめ
今回は、GASで共有権限の設定方法について紹介しました。
共有権限が各ファイルどうなっているかを見たい時に使えるコードです。
もうできているものが使いたいという方は以下の記事から使用することができます。