見出し画像

【GAS】でGoogleドライブを操る! 共有する相手の「User」とは?


User とは

Google ドライブのフォルダやファイルを共有する際、共有する人の指定または削除や、共有してる人の情報を得ることができる、「Drive」サービスの中の「User」クラスを紹介します。

この「User」クラスは、何に使うのか、そしてどの様な情報を持っているのかみていきましょう。

※ なお、「Session.getActiveUser()」「Session.getEffectiveUser()」から得られる「User」クラスのオブジェクトがあるのですが、こちらは GoogleAppsScript の実行者のことを取り扱っており、今回のとは別物です。

何に使うのか

実際、Google ドライブのフォルダやファイルを共有することにおいて、この「User」クラスを使ってできることは大きく分けて以下の4つに分けられます。

これら3つのことの詳細は、別の章で紹介します。

  • フォルダ、ファイルを共有している相手の情報を得る

フォルダやファイルを共有している人の名前、メールアドレス、ドメインと Google アカウントのアイコンの URL を取得することができます。

  • フォルダ、ファイルの共有相手に指定

フォルダやファイルを共有する相手を User クラスを使ってできます。
共有の仕方には、そのフォルダやファイルを編集できる権限や、閲覧のみできる権限や大元のオーナー(なんでもできる)の切り替えなどをする際に「User」クラスのオブジェクトを指定することによってできます。

※ ただ、「User」クラスのオブジェクトを指定する以外にも、Gmail のアドレスを指定するだけでも同じことができます。

  • フォルダ、ファイルの共有している相手を外す

フォルダやファイルを共有している人の中から、特定の人を外したい場合に使います。

※ ただ、こちらも「User」クラスのオブジェクトを指定する以外にも、Gmail のアドレスを指定するだけでも同じことができます。

  • フォルダ、ファイルに対してどの共有できる権限(編集者、閲覧者、オーナーなど)があるか確認

注意点

「基本的」に、フォルダやファイルを共有する特定の人を指定するには、Google アカウントに紐ずれられたメールアドレスを持っている人のみとなります。
なので、Google アカウントを持っていない人の「User」クラスのオブジェクトは扱えないことを気を付けてください。

User を扱うには

「User を扱うには」とは、実際に「User」クラスのオブジェクトを取得する方法のことを指します。

「User」クラスにユーザーの名前やメールアドレスからオブジェクトを生成する方法は"なく"、基本的にすでにフォルダやファイルに編集者か閲覧者として共有してる人からしか取得できません。

それでは、共有できる権限(編集者、閲覧者、オーナーなど)ごとに、どの様に「User」クラスのオブジェクトを取得するかみていきましょう。

なお、概ねフォルダでもファイルでもやり方は全く同じになります。

オーナーの「User」クラスのオブジェクトを取得

オーナーとは、フォルダやファイルの閲覧、編集そして誰と共有するかなどの決めれる権限も持っています。
オーナーは一人しかいません。

let owerUser = "Folder クラスか File クラスのオブジェクト".getOwner();

編集者の「User」クラスのオブジェクトを取得

編集者とは、フォルダやファイルの中身を書き換えなど行える人を指します。
編集者の「User」クラスのオブジェクトを取得する場合、全ての編集者を取得することになるので、得られるのは「User」クラスのオブジェクトの"リスト"になります。

let editorUsers = "Folder クラスか File クラスのオブジェクト".getEditors();

閲覧者の「User」クラスのオブジェクトを取得

閲覧者とは、フォルダやファイルの閲覧のみが許された人になります。 閲覧者の「User」クラスのオブジェクトを取得する場合、全ての編集者を取得することになるので、得られるのは「User」クラスのオブジェクトの"リスト"になります。

let editorUsers = "Folder クラスか File クラスのオブジェクト".getViewers();

User が持っている情報の確認

先に書いたように、「User」クラスのオブジェクトには「名前」、「メールアドレス(Gmail)」、「所属しているドメイン」、「Google アカウントのアイコンの URL」の情報を持っています。
ここでは、それらの情報の取得の仕方を紹介します。

なお、戻り値に対して”.toString()”としているのは、詳しくはここでは考えません。
文字列として表示する為に、そう言うものと考えてもらえたらありがたいです。

  • User の名前を取得

Google アカウントに登録されているその人のユーザー名を取得します。

"User クラスのオブジェクト".getName().toString(); -> "太郎"

  • User のメールアドレスの取得

Google アカウントに登録されているその人の Gmail アドレスを取得します。

"User クラスのオブジェクト".getEmail().toString(); -> "tarou_sample@gmail.com"

  • User のドメインの取得

ここでのドメインとは、組織(会社など)などのグループのようなものです。
Google のサービス内では、そんなグループごと(ドメインごと)にメールアドレスを作成する際、@(アットマーク)以降を好きな文字列で統一することができるのです。
一般に Google アカウントを持っている人が与えられた Gmail のアドレスの@(アットマーク)以降は「gmail.com」になっていると思います。
なお、このサービスは詳しくないのですが、有料プランだと思います。

"User クラスのオブジェクト".getDomain().toString(); -> "gmail.com"

  • User の Google アカウントのアイコンの URL を取得

Google アカウントに設定したアイコンの画像の保存先の URL を取得できます。
アイコンを設定していない場合は、デフォルトの画像になります。

"User クラスのオブジェクト".getPhotoUrl().toString(); -> https://googleusercontent.com/a/honyararahohyrara"

User をフォルダやファイルの共有相手に指定

実際に、フォルダやファイルを共有する人を「User」クラスのオブジェクトを使って指定します。

指定するには、共有する権限(編集者、閲覧者、オーナーなど)ごとに指定していくことになります。

なお、「User」を指定していますが、全て Googel アカウントのメールアドレスの文字列に置き換えてもできます。

オーナーに User を指定

ある「User」をオーナーにする場合です。
オーナーは一人しかおらず、これはオーナーを交代する際などに使われます。

なお、現オーナーを他と交代させるには、現オーナーしか行えません。
また、交代後の元オーターは自動的に編集者としての権限を持つユーザーとなります。

"Folder クラスか File クラスのオブジェクト".setOwner("User クラスのオブジェクト" or "メールアドレス(文字列)");

編集できる権限を User に指定

ある「User」を編集できる権限を持つユーザーとして追加する場合です。

"Folder クラスか File クラスのオブジェクト".setEditor("User クラスのオブジェクト" or "メールアドレス(文字列)");

閲覧できる権限を User に指定

ある「User」を閲覧のみできる権限を持つユーザーとして追加する場合です。

"Folder クラスか File クラスのオブジェクト".setOwner("User クラスのオブジェクト" or "メールアドレス(文字列)");

フォルダ、ファイルの共有している相手を外す

フォルダやファイルを共有している人の中から、特定の人を外したい場合に、その人の「User」クラスのオブジェクトを指定することでできます。

User 外す際も共有する権限ごとに指定する方法があり、また「User」を指定していますが、全て Googel アカウントのメールアドレスの文字列に置き換えてもできます。

編集者がら User を外す

"Folder クラスか File クラスのオブジェクト".removeEditor("User クラスのオブジェクト" or "メールアドレス(文字列)");

※ 編集できる権限を与えられている User の中に、指定した User がいない場合は、エラーが出ます。

閲覧者から User を外す

"Folder クラスか File クラスのオブジェクト".removeViewer("User クラスのオブジェクト" or "メールアドレス(文字列)");

※ 閲覧できる権限を与えられている User の中に、指定した User がいない場合は、エラーが出ます。

User が与えられている共有の権限をなくす

ある User が与えられた共有の権限を剥奪出来ます。

"Folder クラスか File クラスのオブジェクト".revokePermission("User クラスのオブジェクト" or "メールアドレス(文字列)");

※ 何かしらの共有の権限を与えられている User の中に、指定した User がいない場合と、オーナーを指定した場合は、エラーが出ます。

フォルダ、ファイルに対してどの共有できる権限があるか確認

ある User が、あるフォルダやファイルに対してどの共有する権限を持っているのかを確認できます。

なお、「User」を指定していますが、全て Googel アカウントのメールアドレスの文字列に置き換えてもできます。
加えて、戻り値に対して”.toString()”としているのは、詳しくはここでは考えません。
文字列として表示する為に、そう言うものと考えてもらえたらありがたいです。

"Folder クラスか File クラスのオブジェクト".getAccess(User クラスのオブジェクト" or "メールアドレス(文字列)").toString() -> "EDITOR"

戻り値として、

  • OWNER (オーナー)

  • EDITOR(編集できる人)

  • VIEWER(閲覧できる人)

  • NONE(何もできない人)

とその User が与えられている権限の文字列が返ってきます。

いいなと思ったら応援しよう!