G Suiteでは、ファイルサーバとは異なり独特の共有システムがあります。それはOffice365やBoxのようなストレージサービスとは少々異なる点も多く、そこを理解せずに利用してしまうと、思わぬトラブルに出会うこともあるかもしれません。

G Suiteでは、単なるファイル単位での共有権限だけでなく、HTML Serviceで生成したウェブアプリケーションの権限、G Suiteならではの管理者設定による制限、ライブラリの参照などなどGoogle Apps Scriptに関するものもあるので、多岐に渡ります。今回はこの辺をまとめてみたいと思います。

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

Google Driveに於けるファイル・フォルダの共有は、すでにG Suiteをお使いの人ならばおなじみですね。ですがこの共有方法、他のクラウドストレージサービスとは大きく異る点があるので、非常に要注意なのです。

特定の人とだけ共有する場合

秘匿性の高いファイルであるため、特定の人とだけ共有したい。こういうシーンは多くあります。基本的にはメアドを入れて相手に通知すれば良いだけですが、以下の注意点があります。

  • 特定のユーザだけがアクセスできるの状態になっていない場合、組織内の全員が閲覧や編集が可能になります。
  • 必ず設定としてはファイルの共有は「オフ」の状態にして、特定の人のメアドを入れましょう。
  • また、複製やダウンロードされてはまずい場合には、詳細設定からオーナーの設定の2つのチェックは入れておくべきでしょう。

図:リンクの共有が特定ユーザではない場合、それ以外の人も見られてしまうのです

図:オーナーの設定のチェックは入れておくべき。

共有の時限設定

共有はしたいけれど、いつまでも共有ではなく一時的に共有したいだけの場合、オーナーがその時が来た時に共有設定を外してあげなければなりません。しかし、膨大なファイル数や覚えていられるか?といった物理的な問題の前に、いつまでも共有されてるファイルがGoogle Drive内にどんどん増えてしまいます。

この時の為に共有時に時限設定を施しておくと、自動的に共有が外れますので便利です。Boxなどのようにパスワード共有機能が無いのが残念ですが、この設定を施す事で少しでも情報の管理不徹底が是正できます。

  1. 特定のユーザとだけ共有する状態にしておく
  2. 再度、共有設定画面⇒詳細設定の中で、対象のユーザにカーソルを合わせるとタイマーのアイコンが出るのでクリック
  3. アクセス有効期限の日付を設定してあげる。

図:アクセスの有効期限は自由に設定可能です

グループ単位で共有権限を与える場合

企業の導入当初に見られるもったいないものとして「実はグループ単位で共有設定は出来る」という事をしらず、個別メールアドレスでファイル毎に共有をしてたりするケースが見られます。

グループとは、Googleグループの事で、様々なプロジェクト単位、部署単位、役職者単位でメーリングリストを作って置くと便利ですね。このグループのアドレスを共有先としてアクセスした場合、グループメンバーの追加削除を行うだけで、設定したファイル・フォルダ全てに反映されるので、個別に共有設定をする必要もなく、外した場合もグループからメンバーの除外をするだけでOKです。

特に退職、異動、入社などの度にどのファイルを・・・なんてやっていたら日が暮れてしまうだけでなく、共有漏れが必ず発生します。グループ単位で閲覧・編集の権限付与が可能になります。G Suiteを活用する場合、個別メールアドレスではなくグループアドレスを活用するようにしましょう。

図:グループアドレスを入力して共有。管理はGroupで一括管理

図:グループで色々管理が出来るのです。

外部公開時用の共有設定

外部公開(つまりGoogleアカウントを持つ別の会社の人)との共有時では注意すべき点があります。ただしこれは外部の人に限らず、内部であっても注意が必要な項目でもあったりします。

  1. 外部共有者は、基本「閲覧権限」で運用すべし
  2. 編集権限を与える場合には、フォルダ単位ではなくファイル単位で行うべし。フォルダに間違って入れてしまったファイルでも見られる状況は好ましくない。
  3. 共有されたファイルは閲覧権限であれば「履歴は見られない。ただし、編集権限の場合には、見られてしまうので、過去のやり取りが履歴から漏れる可能性がある。これは、ファイルだけでなく、Google Apps Scriptの変更履歴も同じ

図:閲覧権限の場合、履歴は表示されない!!

また、この変更履歴はファイルに対して記録されていますが、複製した場合には引き継がれません。ので、外部の方に渡す場合には、これまでの原本ではなく、複製した外部用として渡しておくと、履歴からあれやこれや探られる事もなく安全に運用できます。

フォルダの共有時の注意点

よくトラブルになりがちなのが、フォルダの共有です。この共有はフォルダ単位で行われるがゆえに起きる問題なのですが、その問題というが

  1. 誰かと共有されてるフォルダにファイルを生成すると、瞬時にそのファイルは親フォルダの共有権限を引き継ぐ
  2. 共有されてるフォルダに、共有されていないファイル・フォルダを移動した場合、共有権限は変更される
  3. 共有フォルダ内にあるけれど、共有されていないファイルがある時、親フォルダの共有権限を変更すると、中に入ってるファイルの共有権限も同じ権限が再適用されてしまう。

自分の意図しない共有権限の変更によって、公開すべきではないファイルが公開状態になってしまうケースがよくあります。再度この場合、中にある対象のファイルは、共有設定の個別設定を再設定してあげる必要があります。

共有された側のファイル削除などの結果

実はだいぶ前のGoogle Apps for Workの時代、共有された側がファイルを削除すると、なんと「オーナーのゴミ箱に移動する」というトンデモナイ仕様の時代がありました。

Google Driveの場合、共有されると、共有された側のドライブの直下にファイルやフォルダが現れて、移動だけなら問題ないのですが、共有であったり削除をした場合、影響を受けてしまいます。その中で「削除」をした場合、どうなるか?

答えは「共有された側のフォルダから消える(共有解除)されるだけで、原本はそのまま」です。再度必要な場合にはオーナーに共有してもらいましょう。

スクリプトからの参照と操作

Google Apps Scriptからファイルを操作する場合、対象のファイルにスクリプト実行者のアクセス権限が付与されていない場合、エラーとなり操作ができません。この場合、オーナーがスクリプト実行者のメアドをファイルの共有に加える事で問題は解消されます。

ライブラリについても同じです。対象のファイルが公開されていない場合、他社がその中にあるスクリプトをライブラリとして使いたいとなっても、アクセス権限によってライブラリ参照が弾かれてしまいます。

つまり、ファイル共有権限 = アクセス権限となっているので、スプレッドシートにはアクセスさせたくないけれど、スクリプトを実行させて操作はしたいといった事ができません。このようなケースを実現したい場合には、HTML Serviceのアクセス権限を元に、スプレッドシートを秘匿しつつ、スクリプトから操作できる環境を作る必要があります。

図:アクセス権限がないのでライブラリ参照もできない。

メール送信時の注意

GMailにてGoogle Driveのファイル共有リンクを添付して送る時の注意点として、共有オフのファイルの場合送信時に「共有を促されます」。この時、現在は特定のユーザとの共有となっていました。

この時、リンクを知っている者で共有をしてしまうと、秘匿ファイルなのに全世界に公開状態となってる事に気が付かないので、非常に注意です。

図:ドライブファイルへのリンクを添付している様子。

図:送信時に共有設定が無いとこのメッセージが出る。

ウェブ上で一般公開とは?

Google Driveのファイル共有には「ウェブで一般公開」という設定が存在します。リンクを知ってる者全員とは違い、この設定は全世界に公開という点では同じなのですが、Googleの検索エンジンにもインデックスされます。誰でもリンクを知らずとも、検索すれば見つける事が可能となるため、G Suiteではよほどの理由がない限り使わないようにする事がオススメです。

またこの場合、Googleアカウント不要でアクセス・ダウンロードが可能となるので、例えば一般向けの配布資料やアプリなどを公開するといったシーンで利用します。社内で利用するならば、別のドメインで切って、専用のアカウントとして行う事で不用意な共有を防ぐことにつながります。自分の日常用のアカウントではやらないほうが良いと思います。

※リンクを知ってる者全員アカウントでも、Googleアカウントは不要です。

HTML Serviceのアクセス権限

Google Apps ScriptのdoGetおよびdoPostの関数。これらはウェブアプリケーションやウェブAPIを構築する場合に利用される特殊な関数です。それと合わせて、実はGoogle Apps Scriptでは、ファイルのアクセス権限とは全く別に、スクリプトの実行権限を設定する事が可能になっています(ただし、doGetとdoPostを通じた操作の場合)

  1. ファイルの共有はオフの状態であっても、その中のスクリプト実行権限を別に設定可能
  2. スクリプト実行権限をファイルのオーナーにする事で、秘匿したファイルをアクセス権限の無いものでも操作が代理で可能になる
  3. doGetやdoPostのAPIは社内で公開しておき、GASからはライブラリとしてではなく、urlfetch.appでこれらにアクセスさせる事で、APIを実行可能になる。
  4. Google Apps Script Execution APIとして設定しておけば、doGetやdoPost同様にファイルへのアクセス権限はなくとも、操作だけは可能になる。

ファイルのアクセス権限と実行権限を分けられるため、例えばマスターファイルにアクセスはさせたくない。けれどそこにある情報を参照させてデータは渡したいといったような場合(メアドを元にユーザの情報を返すスプレッドシートと仕組み)には非常に有効です。実行者の権限ではなく、オーナーの権限で動かすので、ファイル共有は不要⇒他の人の情報は仕組みがなければ実行者は取得はできない といった事が可能です。

もちろん、ライブラリについても同じですので、スクリプトオーナーのコードを完全秘匿して実行は行えるようになります。手順ですが

  1. スクリプトエディタ上で公開⇒ウェブアプリケーションとして公開を実行(この作業はファイルオーナーしかできません)
  2. 次のユーザとしてアプリケーションを実行で誰の権限で動かすかを指定する。自分か?アクセスしてるユーザの二択が基本。後者の場合、ユーザはGoogleアカウントを持ってる必要があります。
  3. アプリケーションにアクセスできるユーザを指定する。自分のみ、全員、全員(匿名含む)の三択。但し、全員の場合はGoogleアカウントが必要で、匿名含むの場合は、Googleアカウントなしでアクセス可能です。
  4. 最後に導入すると、ウェブアプリケーションのURLが取得できます。このURLでアクセスをします。URLの最後がexecが本番用、devがテスト用で、テスト用は最新のコードをテストのリンクを踏むと表示されますが、変更したコードがそのまますぐに反映されてしまうので、テスト用のURLで運用しないように。

2.の時に「自分」とする事で、アクセスしてきたユーザの代理として、自分の権限で実行されるため、対象のファイルへのアクセス権を持たない人でも、その中にあるファイルのデータや操作を行えます。

※ただし、この方法は、UrlfetchAppの使用回数制限や連続実行制限に注意が必要です。

管理者設定による共有の制限

G Suiteの場合、社内運用をするに当たって、いくつかの共有制限を加えるのが一般的です。どのレベルまで制限するかは管理者次第ですが、主な制限としては以下のようなものがあります。設定は管理コンソールから行い、アプリ⇒G Suite⇒ドライブとドキュメントの設定へ入り、共有設定から行います。

  1. 別の組織のドライブファイルへのアクセスへの許可
  2. 自分のファイルを外部組織へとファイル共有する許可

前者は大企業だとデフォルトでオフになってるケースが多いです。またその中にある外部からのファイル受信の許可もチェックを外している場合、例え対象のファイルが「リンクを知っている者全員」であったとして、アクセスができず、「アクセス権限要求画面」が出るようになっています。相手が個別に許可を与えても、アクセスする事はできません。

後者も同様で、社内のアプリを外部の人と共有したくとも、管理者レベルでそれを阻止する為の制限。不用意な外部共有やそれが残ってしまう事を防ぐ為に大企業だとオンになってるケースが多いです。また、グループ会社間ではこれでは困るので、ドメインで区切って置いて、ホワイトリストを設定したアクセス許可をするのが一般的です。

図:外部ファイルへのアクセスを封じられる場合でもこのメッセージが出る

図:外部ファイルへのアクセスを封じるための設定

図:社内ファイルの外部共有を封じるための設定

共有ドライブの共有について

Businessプラン以上で利用可能なチームドライブこと「共有ドライブ」は、ファイルサーバ的な運用を可能にするシステムで、ファイルオーナーは個人ではなく共有ドライブとなるため、退職されたり異動でいなくなってもファイルが消えたりせず、チーム全員で同一のフォルダ構成とファイル構成で管理が可能です。

この共有ドライブですが、通常の共有とは異なり、ドライブ毎にメンバーを追加する形で行います。よって、Googleドライブとは共有の仕方が異なり、基本参加してるメンバーだけが個別ファイルにアクセス可能です(外部に一時公開とかはできません)。外部ユーザをチームに追加する場合、管理者側で制限を課してると思われるので、制限を緩和しないと参加ができません。

また、チームに属してるものへ、対象のファイルへのリンクを知らせる場合、URLを取得する手順が少々異なります。

  1. 対象のファイルを右クリック⇒共有
  2. 左下のアクセスできるユーザをクリック
  3. リンクの共有がオフになってると思うので、クリックし、リンクの共有をオンにする。
  4. URLをコピーして知らせてあげる

図:共有ドライブのファイルのURL取得はここ

図:共有ドライブの共有に関する制限

共有してみる: