SpreadSheet + GASの盲点
ってほど大げさじゃないんですが、両方を組み合わせて不特定多数の人をターゲットにしたシステムなどを考えた時に一つのネックになるのが、「Googleアカウント」を持っていることが前提になる点です。
SpreadSheet自体は全体公開(リンクを知ってる人は全員見れる)にしちゃえば閲覧も編集もまあできるんですが、SpreadSheetからのGAS実行は権限が必要になるため、実行ができないのです。
ただ、これを回避する方法は少しだけあって、GASをWebアプリケーションとして公開すれば、(権限が必要な処理以外は)実行できるようになります。
ビジター共有というものができたらしい
G Suite限定なので今まで気づかなかったんですが、どうも今年になってビジター共有というものができたらしいですね。
これは、今までSpreadSheetの公開範囲を、Googleアカウント持ってる人向けか全体公開かしか選べなかったものが、Googleアカウントでないメアドに限定して公開を行えるという機能です。
注意としては、メールからの一時的な認可なので一定時間たつと権限が消えることです(この場合でも元のメールから再認証行える)
ビジター共有ならGAS動くのか?
はい。これが本稿における本題です。
ちょっと気になったので、やってみました。
SpreadSheetからGASキックする
ボタン配置して、押されたらhtmlを表示するという単純なものです。
内容は、入力フォーム的な利用をしたかったのですが、権限の問題があり確認の必要があったためなんか変な内容ですが、気にしないでください。
んで、これをビジター共有したアカウントから見てみましょう。
ビジター共有としてメアドを入力した場合、こういうメールが届きます。
「Open in Sheets」をクリックするとブラウザが開き、SSが表示されます。
ちなみに認証が切れるとこういう風になります。この場合は元のメールから再度「Open in sheets」をクリックすることになります。
さて、実行してみましょう。
お、行けるか?
...無念orz
ちなみに、どんなスクリプトでもダメなわけではなく、権限が不要なもの(例:ダイアログ表示)などは実行できるようです。
まあ、ここまではやっぱりな・・・という感じなんですが。
冒頭で、権限なしでGAS実行するためのもう一つの手段としてWebアプリケーションとして公開するという手があることを書きました。これだと作成者の権限で実行できたりするので本来行けるはずなんですが・・・
先ほどのフォームをgetで公開する世にして、まずは完全なるゲスト状態(アカウント招待なし)でdoGetをたたいてみると
ちゃんといけます。
が、ビジター共有された状態でこのURL開くと、
ガーン・・・むしろ劣化してるじゃねえか・・・
結論
ビジター共有はGASの実行権限周りではまだ微妙なようです。修正されるのをお待ちしております。