GASでプログラム(マクロ)を実行する際のgoogleアカウントについて

スプレッドシートなどのgoogleサービスの大きな強みは、マルチユーザーでの共有や共同作業がしやすい点です。しかしそれは、誰でもファイルにアクセスできる可能性もはらんでいます。

そのため、これらでは権限設定(共有設定)が重要になってきます。これは通常の利用時にもそうですが、プログラムから各種のファイルやサービスを扱う際にも同様です。

正しく権限設定が行われていないとプログラム実行中にエラーが起きたり、思わぬ誤動作がおきます。しかし、ユーザーが直接対象のファイルを開くわけではないため、なぜエラーが起きているのか、非常にわかりにくい場合もあります。

プログラム実行時の権限の仕組みや、その設定方法についてまとめますので、ご利用の際やエラーが発生した際に参考にしてください。

※実行の際に自分が使っているgoogleアカウントがわからない場合は、こちらの手順で確認してみてください。

フォルダーやファイルへの権限設定

プログラムがスプレッドシートなどの各種ファイルやフォルダにアクセスする場合、プログラムを実行するユーザーのアカウントに、それらすべてのファイルやフォルダへの編集権限(または閲覧権限)が与えられていなければなりません。

そのため、事前に各ファイルやフォルダーのオーナー(または既に権限を持っているユーザー)は、次の手順で想定されるユーザーへ権限を付与してください。

各種ファイルの場合

  • スプレッドシートやドキュメントなどの各種ファイルは、画面右上の共有マークより設定します。
  • 権限を追加したいユーザーのアカウントが特定できている場合は、そのアカウントのメールアドレスを直接追加してください。
  • 不特定多数のユーザーに権限を追加したい場合は、「リンクを知っている全員に変更」をクリックします。
  • タイプを「編集者」に変更し、完了をクリック。これにより、このURLを知っている人は、そのファイルにアクセスして編集できるようになります。(情報漏洩にご注意ください)

フォルダーの場合

  • googleドライブ上で対象のフォルダを表示し、右クリック>共有を選びます。
  • あとは各種ファイルの場合と同じですので、上記を参考にしてください。

プログラムが自動で新しいファイルやフォルダを作る場合

プログラムがその実行中にファイルやフォルダを新規作成する場合、それらについても、アクセスしてくるユーザーへ権限を付与しておかなければならない場合があります。そういった際にはプログラムにより自動付与できますので、プログラマーへご相談ください。

gmailやカレンダーの権限設定について

プログラムの操作対象に、gmailやカレンダーが含まれている場合、権限設定はより重要です。

gmailの場合

プログラム中でgmailのデータを扱う場合、基本的には、そのプログラムを実行しているgoogleアカウントのgmail内のデータしか扱えません。即ち、Bというgoogleアカウントでプログラム実行して、Aのアカウントのgmailを操作することはできません。

(つまり同じプログラムを実行しても、Aで実行した場合と、Bで実行した場合では、対象のgmailが異なるため、結果が異なる(またはエラーになる)ということが起こりえます)

ただこれには抜け道もあり、そのプログラムをウェブアプリ化して実行することで、回避できます。ウェブアプリ化する際に、設定画面で実行アカウントを「Me(xxxxxxxx@gmail.com)」とすることで、そのプログラムのオーナーのgoogleアカウントとして実行できるようになるので、誰でもそのオーナーのgmailを操作できるようになります(情報漏洩にご注意ください)。詳細はこちらをご確認ください。

カレンダーの場合

  • googleカレンダーを開きます。
  • マイカレンダー内の該当カレンダーにマウスを合わせ、3点リーダのマークをクリック
  • ポップアップが開くので、設定と共有をクリック
  • アクセス権限をクリック
  • 不特定多数のユーザーに権限を付与する場合は、「一般公開して~」にチェックを入れます。特定のユーザーに権限付与する場合は、ユーザーを加えていきます。

※ちなみに、プログラムでカレンダーを操作する場合、そのカレンダーのIDを取得する必要があります。

上記の画面でカレンダーの統合をクリックすると、カレンダーIDを確認することができます。(複数のカレンダーを作成していない場合は、そのアカウントのメールアドレスそのままです)

トリガー設定における権限設定について

トリガー発動によりプログラムを実行する場合、その実行アカウントは、トリガーを設置したgoogleアカウントになります。

つまり、適切な権限をもったアカウントでトリガーを設定する必要があります。

特に問題になるのはプログラムがgmailを操作する場合で、先に述べたように、プログラムはその実行アカウントのgmailしか操作できません。そのためgmailを操作したい場合は、そのgmailのgoogleアカウントでトリガーを設置する必要があります。

トリガー設置の方法はこちらをご覧ください。

ウェブアプリとして(URL経由で)プログラムを実行する場合の権限設定について

基本的にはこれまでに紹介した内容と同様の設定が必要となります。

ただし、プログラムをウェブアプリとして公開する際の設定において、2.実行アカウント設定で「Me(xxxxxxxx@gmail.com)」を選んだ場合は、プログラムオーナー以外のアカウントでは権限設定が不要になります。

※ただしこの場合、URLを知っている誰でも、オーナーと同等の権限で実行できてしまうので、情報漏洩などにご注意ください。詳しくはリンク先をご覧ください。

【補足】プログラムを実行する際に、どのユーザーのアカウントになっているか確認するには??

基本的には、そのときに用いているブラウザでログインしているgoogleアカウントでの実行とみなされます。そのため、別のパソコンを使っている別の方であっても、同じgoogleアカウントでログインしていれば、同じユーザーによる実行とみなされます。

  • スプレッドシートなどの各種ファイルから実行する場合は、画面にあるユーザーマークをクリックすれば、お使いのgoogleアカウントを確認できます。
  •  URLからウェブアプリで実行する場合は、ひとまず次のgoogleサイトにアクセスしてみてください。
    https://www.google.com/

    そうすると画面右上にユーザーのアカウント(ログインしてない場合はログインボタン)が表示されるので、お使いのgoogleアカウントが確認できます。

まとめ

このように、共有や共同作業が容易な分、各種の権限設定を正しく行う必要があり、取り扱うファイルやフォルダーが多かったり、操作するユーザーが多いと、なかなか手間であったりもします。

この手間を一気に飛び越えてしまう裏技的な存在として、本稿でも少し触れましたが、ウェブアプリ化という方法もあります(その分リスクもありますが。。)詳しくはこちらをご覧ください。

最初はなかなか難しい面もあると思いますので、迷った場合はプログラマーまでご相談ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です