スプレッドシートなどのgoogleサービスの大きな強みは、マルチユーザーでの共有や共同作業がしやすい点です。しかしそれは、誰でもファイルにアクセスできる可能性もはらんでいます。
そのため、これらでは権限設定(共有設定)が重要になってきます。これは通常の利用時にもそうですが、プログラムから各種のファイルやサービスを扱う際にも同様です。
正しく権限設定が行われていないとプログラム実行中にエラーが起きたり、思わぬ誤動作がおきます。しかし、ユーザーが直接対象のファイルを開くわけではないため、なぜエラーが起きているのか、非常にわかりにくい場合もあります。
プログラム実行時の権限の仕組みや、その設定方法についてまとめますので、ご利用の際やエラーが発生した際に参考にしてください。
※実行の際に自分が使っているgoogleアカウントがわからない場合は、こちらの手順で確認してみてください。
フォルダーやファイルへの権限設定
プログラムがスプレッドシートなどの各種ファイルやフォルダにアクセスする場合、プログラムを実行するユーザーのアカウントに、それらすべてのファイルやフォルダへの編集権限(または閲覧権限)が与えられていなければなりません。
そのため、事前に各ファイルやフォルダーのオーナー(または既に権限を持っているユーザー)は、次の手順で想定されるユーザーへ権限を付与してください。
プログラムが自動で新しいファイルやフォルダを作る場合
プログラムがその実行中にファイルやフォルダを新規作成する場合、それらについても、アクセスしてくるユーザーへ権限を付与しておかなければならない場合があります。そういった際にはプログラムにより自動付与できますので、プログラマーへご相談ください。
gmailやカレンダーの権限設定について
プログラムの操作対象に、gmailやカレンダーが含まれている場合、権限設定はより重要です。
gmailの場合
プログラム中でgmailのデータを扱う場合、基本的には、そのプログラムを実行しているgoogleアカウントのgmail内のデータしか扱えません。即ち、Bというgoogleアカウントでプログラム実行して、Aのアカウントのgmailを操作することはできません。
(つまり同じプログラムを実行しても、Aで実行した場合と、Bで実行した場合では、対象のgmailが異なるため、結果が異なる(またはエラーになる)ということが起こりえます)
ただこれには抜け道もあり、そのプログラムをウェブアプリ化して実行することで、回避できます。ウェブアプリ化する際に、設定画面で実行アカウントを「Me(xxxxxxxx@gmail.com)」とすることで、そのプログラムのオーナーのgoogleアカウントとして実行できるようになるので、誰でもそのオーナーのgmailを操作できるようになります(情報漏洩にご注意ください)。詳細はこちらをご確認ください。
トリガー設定における権限設定について
トリガー発動によりプログラムを実行する場合、その実行アカウントは、トリガーを設置したgoogleアカウントになります。
つまり、適切な権限をもったアカウントでトリガーを設定する必要があります。
特に問題になるのはプログラムがgmailを操作する場合で、先に述べたように、プログラムはその実行アカウントのgmailしか操作できません。そのためgmailを操作したい場合は、そのgmailのgoogleアカウントでトリガーを設置する必要があります。
トリガー設置の方法はこちらをご覧ください。
ウェブアプリとして(URL経由で)プログラムを実行する場合の権限設定について
基本的にはこれまでに紹介した内容と同様の設定が必要となります。
ただし、プログラムをウェブアプリとして公開する際の設定において、2.実行アカウント設定で「Me(xxxxxxxx@gmail.com)」を選んだ場合は、プログラムオーナー以外のアカウントでは権限設定が不要になります。
※ただしこの場合、URLを知っている誰でも、オーナーと同等の権限で実行できてしまうので、情報漏洩などにご注意ください。詳しくはリンク先をご覧ください。
【補足】プログラムを実行する際に、どのユーザーのアカウントになっているか確認するには??
基本的には、そのときに用いているブラウザでログインしているgoogleアカウントでの実行とみなされます。そのため、別のパソコンを使っている別の方であっても、同じgoogleアカウントでログインしていれば、同じユーザーによる実行とみなされます。
- URLからウェブアプリで実行する場合は、ひとまず次のgoogleサイトにアクセスしてみてください。
https://www.google.com/
そうすると画面右上にユーザーのアカウント(ログインしてない場合はログインボタン)が表示されるので、お使いのgoogleアカウントが確認できます。
まとめ
このように、共有や共同作業が容易な分、各種の権限設定を正しく行う必要があり、取り扱うファイルやフォルダーが多かったり、操作するユーザーが多いと、なかなか手間であったりもします。
この手間を一気に飛び越えてしまう裏技的な存在として、本稿でも少し触れましたが、ウェブアプリ化という方法もあります(その分リスクもありますが。。)詳しくはこちらをご覧ください。
最初はなかなか難しい面もあると思いますので、迷った場合はプログラマーまでご相談ください。