Google公式User Guide勝手翻訳 

セキュリティ

Google Apps スクリプトは屈強なセキュリティモデルを備えることによってあなたのデータを守ります。


  • あなたが実行するスクリプトがアクセスできるのは、あなたがアクセス権を持つGoogleアプリケーションとサービス内の情報だけである。例えば、もしあなたが他人のカレンダーにエントリーを置くことができたとしたら、あなたとして実行されるスクリプトもその人のカレンダーにエントリーを置くことが可能だ。もしあなたが誰かのカレンダーにアクセスできないならば、例えばあなたとシェアしてないカレンダーだとして、そうするとあなたとして実行されるスクリプトも、その人のカレンダーにエントリーを置くことができない。
  • 個人情報を含むアプリケーションにアクセスするスクリプトには、はっきりとアクセス権を与えなければならない。例えば、カレンダーとかメールにアクセスしようとするスクリプトなどだ。
  • あなた以外の人間に書かれたスクリプトもしくは、あなたが共有しているスクリプト明示的に、アクセス権を与えなければならない。例えばスクリプトを含んでいるスプレッドシートなど。
  • あなたのプライベートな情報(例えばあなたのGoogleカレンダーとか)には、はっきりとアクセス権を与えない限りは、関数はアクセス出来ない。
  • カスタム関数とシンプルイベントハンドラーは認証なしで動き、それゆえ認証が必要なものにはアクセスできない。
  • スクリプトギャラリーからインストールしたとしても、自分でスクリプトエディタを使用して書いたとしても 、スプレッドシートに加えたすべてのスクリプトは、そのスプレッドシートにアクセス出来る。

パーミッションとスクリプト実行の理解

スプレッドシートのスクリプトにおいて、それぞれ異なった許可レベルで実行出来る事を示したのが次の表になる

 スクリプトを所有スクリプトを閲覧スクリプトを編集スクリプトを実行
スプレッドシート所有者

所有者とは、新規作成でも既存のコピーでも、どっちにしても作った人間の事
スクリプトを新規作成、所有することが出来る

Yes
  • スプレッドシート所有者が所有するスクリプト
  • スプレッドシート所有者と共有されたスクリプト
Yes

スプレッドシート編集者


編集者とはスプレッドシート所有者が編集権を与えた人間のこと。

スクリプトを新規作成、所有することができるYes
  • スプレッドシート編集者が所有するスクリプト
  • スプレッドシート編集者と共有されたスクリプト
Yes
スプレッドシート閲覧者

閲覧者とはスプレッドシート所有者が閲覧する権利を与えた人間のこと。
スクリプトを新規作成できないNoNoNo
スクリプト所有者

スプレッドシート所有者か編集者の事
作成したスクリプトを所有しているYes所有しているスクリプトのみYes

スクリプト実行の許可

メニューアイテムやイメージをクリックしてスクリプトが呼び出されると、スクリプトはログインして、クリックした人間のIDのもとで実行される。この人間は、スプレッドシート所有者か編集者でなければならない。

カスタム関数は、スプレッドシートが編集されると匿名で実行される。カスタム関数スクリプトは、特定のユーザーに関する情報にはアクセス出来ない。例えば、カスタム関数のあるセルの値を変更して、保存された時、その修正が匿名ユーザーによって行われたことが表示される。

イベント実行の許可

onOpen、onEdit、onInstallのような単純なイベントは、スプレッドシート操作者のIDの元で実行される。インストール可能イベント(スプレッドシートトリガー)は、トリガー作成者のIDの元で実行される。

時限トリガーの実行

時限トリガーは非公開である。トリガーをインストールするには、ユーザーは少なくともリードオンリーの許可がなければならない、言い換えれば、ユーザーはスクリプトエディタでスクリプトを開けなけらばならない。スクリプトがシェアされていたとしても、トリガーはシェアできない。

トリガーでスクリプトが起動されると、トリガーの所有者のIDの元実行される。それはトリガーをインストールいた人間という意味で。

サービスとしてスクリプトを実行する許可

スクリプトのオーナーは、スクリプトをサービスとして発行するための独占的な許可を与えられている。サービスとして発行されたスクリプトは、スクリプト所有者のIDの元で実行される。


アクセス権の供与

スクリプトギャラリーから新たなスクリプトをインストールするときや、誰かが書いたスクリプトの入ったスプレッドシートをコピーしたり、あなたが書いたスクリプトも含めて最初にスクリプトを実行するとき、アクセスする予定のサービスにアクセスする権利をスクリプトに明示的に与えなければならない。セキュリティ認証ダイアログボックスが表示されるのが見えるだろう。それには、スクリプト名、所有者、アクセスすることが必要なサービスが書いてある。

Authorization dialog box displayed when a user must grant access to a script.

次のダイアログボックスも表示されるかもしれない。スクリプトが特定のGoogle アプリケーション又は、サービスにアクセスする要求が表示される。

Dialog box authorizing access to a specific Google application or service


アクセス権の取り消し

もしあなたが書いたか実行したスクリプトがあなたの情報にアクセスすることが必要で、アクセスを要求してきたなら、それを取り消すことが出来る。


スクリプトのアクセスを取り消すには

  1. コンシューマもしくは、ドメインGmailアカウントにサインインしてるブラウザ上で、 Google.com に移動。
  2. ドロップダウンメニューのsettingsと書いてあるところか、あなたのメールアドレスをクリック。
  3. セキュリティ, アプリケーションとサイトの認証編集をクリック. Google Appsスクリプトも含む認証されたサイトのリストが表示される。
  4. アクセスを取り消したいものの、アクセスを取り消すのリンクをクリック


カスタム関数とイベントハンドラのセキュリティ制限

Google Appsスクリプトを使用して書いたスクリプトは、あらゆることが出来る。しかしながら、すべての機能があらゆる環境で使える訳ではない。


カスタム関数は、スプレッドシートが再計算された時いつでも実行されます。例えば、XMLチュートリアルでのthe Oracle of Baconスクリプトはカスタム関数=kb(actor1actor2)を使用してます。カスタム関数は現在のスプレッドシートからデータを読み取ったり、SOAP、UrlFetch、Google翻訳などの匿名サービスを呼ぶことが出来ます。非特有サービスとは、ユーザーの認証が必要ないサービスのことである。ユーザー特有サービスとはあるユーザーに関連するサービスで、Google カレンダーがそれに当たる。ユーザー特有サービスはカレンダーのような、ユーザーのプライベートな情報を貯めこむものもあるし、メールの送信みたいな、ユーザーとして行うものもある

カスタム関数とすべてのシンプルイベントハンドラはユーザーがそれを意識することなく実行され、ユーザー特有サービスにアクセスをすることは出来ない。Appsスクリプトはカスタム関数がユーザーのプライベートな情報を獲得することを禁止している。例えばカレンダー、Gmail,サイトとか。カスタム関数は返し値以外スプレッドシートに書き込むことは出来ない。カスタム関数はそれが置かれているセルのみ書き込むことが出来る。

onEdit関数はカスタム関数と同様に動く。onEdit関数はユーザーがそれを意識することなく実行され、Google AppsスクリプトはonEdit関数がユーザーの情報にアクセスすることを禁止している。onEdit関数は、SOAP とかUrlFetchなどの非特有サービスを呼ぶことが出来る。加えて、onEdit関数は、スプレッドシートどんなセルにも書き込むことが出来る。

onOpenとonInstall関数はユーザーがそれを意識することなく実行される。一般的にこれらの関数は、メニューアイテムとメニューをインストールしたり、初期状態でスプレッドシートのデーター、ヘッダーを入力しておく為にのみ使用する。


複数のGoogleアカウントの使用

Google Docs は複数のGoogleアカウントを同時に同じブラウザ上で使うことはサポートしていない。それはパブリックなGmailアカウントでもGoogle Appsアカウントでも同じである。次のことをやると、問題が起きるかもしれない。


  1. account1@gmail.comとしてログイン
  2. スプレッドシートを開いて、スクリプトエディタを開く。スプレッドシート、スクリプトエディタ両方共 account1でログインしていることを示している。
  3. スクリプトエディタを閉じてaccount1からログアウトする。
  4. 違うGoogleアカウントでログイン 例えば account2@gmail.com.
  5. スプレッドシートを開いて、スクリプトエディタを開く。  スプレッドシートは account2でログインしていることを示している。 しかしスクリプトエディタは account1でログインしていると示している。
  6. スクリプトを保存。

このような状態で、現在のアカウントからログアウトして、Cookieを消去して、ブラウザを再起動する。するとGoogle Docsは再ログインすると次のように振る舞う。

  • account1で再ログインすると, 保存。したスクリプトにアクセスでき、編集できる。
  •  account2で再ログインすると,スクリプトをロードできるが, 編集できない。account1がスクリプトを所有しているので、南京錠がその隣に表示される。