LoginSignup
1
5

More than 1 year has passed since last update.

40 代おっさん GASのフォルダ・ファイルの共有と権限を操作する

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

フォルダ・ファイルの権限

Googleドライブのフォルダ・ファイルは、それぞれについて共有や権限の種類を設定できる。
Driveサービスにて、それらの操作を行うことができる。

DriveサービスはEnum Permissionとして整理されている。

Enum Permissionと権限の種類

メンバー 名称 説明
OWNER オーナー すべての権限を持つ
EDIT 編集者 閲覧者(コメント可)の権限に加えて編集及び共有が可能
COMMENT 閲覧者(コメント可) 閲覧者の権限に加えてコメントが可能
VIEW 閲覧者 閲覧、コピーが可能
ORGANIZER 管理者 共有ドライブの管理をする権限を持つ
FILE_ORGANIZER コンテンツ管理者 共有ドライブのコンテンツの管理をする権限を持つ
NONE 権限なし 権限がない状態

*フォルダ・ファイルの権限を操作する主なメンバーの図は、参考資料の本を見ていただくか、ネットで調べください。

フォルダ・ファイルの権限を変更する

フォルダ・ファイルの権限を追加するには
addEditorメソッド:編集者
addCommenterメソッド:閲覧者(コメント可)
addViewerメソッド:閲覧者
を使う

構文

Folderオブジェクト.addEditor(メールアドレス)
Folderオブジェクト.addViewe(メールアドレス)

Fileオブジェクト.addEditor(メールアドレス)
Fileオブジェクト.addCommenter(メールアドレス)
Fileオブジェクト.addViewe(メールアドレス)

フォルダには閲覧者(コメント可)は付与できない
メールアドレスは文字列でも指定できるが、DriveサービスのUserオブジェクトを指定することも可能

お試し

function tosiki() {
  const email = '**************';

  const folderId = '*******************';
  const folder   = DriveApp.getFolderById(folderId);
  folder.addEditor(email);

  const fileId = '**********************';
  const file   = DriveApp.getFileById(fileId);
  file.addCommenter(email);
}

フォルダ・ファイルの権限を削除するには
removeEditorメソッド:編集者
removeCommenterメソッド:閲覧者(コメント可)
removeViewerメソッド:閲覧者
を使う

構文

Folderオブジェクト.removeEditor(メールアドレス)
Folderオブジェクト.removeViewer(メールアドレス)

Fileオブジェクト.removeEditorメールアドレス)
Fileオブジェクト.removeCommenter(メールアドレス)
Fileオブジェクト.removeViewe(メールアドレス)

お試し

function tosiki() {
  const email = 'k.toshiki1115@gmail.com';

  const folderId = '**********************';
  const folder   = DriveApp.getFolderById(folderId);
  folder.removeEditor(email);

  const fileId = '**********************';
  const file   = DriveApp.getFileById(fileId);
  file.removeCommenter(email);
}

フォルダ・ファイルの共有範囲

5段階で設けられている共有範囲を用いて、まとめて権限を付与できる。
Enum Accessとして整理されている。

Enum Accessのメンバーと共有範囲

メンバー 説明
ANYONE インターネット上の誰もが検索してアクセスできる
ANYONE_WITH_LINK リングを知っている全員がアクセスできる
DOMAIN ドメイン内の誰もが検索してアクセスできる
DOMAIN_WITH_LINK リングを知っているドメイン内の全員がアクセスできる
PRIVATE 許可されたユーザーのみがアクセスできる

フォルダ・ファイルの共有範囲を操作する主なメンバー

メンバー 戻り値 説明
getSharingAccess() Access 共有範囲を取得する
getSharingPermission() Permission 共有範囲の権限を取得する
setSharing(accessType, permissionType) Folder/File 共有範囲とその権限を設定する

お試し

function tosiki() {
  const folderId = '**********************';
  const folder   = DriveApp.getFolderById(folderId);

  console.log(folder.getSharingAccess().toString());
  console.log(folder.getSharingPermission().toString);

  const fileId = '**********************';
  const file   = DriveApp.getFileById(folderId);

  console.log(file.getSharingAccess().toString());
  console.log(file.getSharingPermission().toString());
}

フォルダ・ファイルの共有範囲を設定する

フォルダ・ファイルの共有範囲を設定するには
setSharingメソッド
を用いる

構文

Folderオブジェクト.setSharing(共有範囲, 権限)
Fileオブジェクト.setSharing(共有範囲, 権限)

お試し

function tosiki() {
  const folderId = '**********************';
  const folder   = DriveApp.getFolderById(folderId);
  folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);

  const fileId = '**********************';
  const file   = DriveApp.getFileById(folderId);
  file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT); 
}

参考資料

https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-Google-Apps-Script%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80-%E7%AC%AC3%E7%89%88/dp/4798064742

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5