5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpreadSheet + GASの盲点

ってほど大げさじゃないんですが、両方を組み合わせて不特定多数の人をターゲットにしたシステムなどを考えた時に一つのネックになるのが、「Googleアカウント」を持っていることが前提になる点です。
SpreadSheet自体は全体公開(リンクを知ってる人は全員見れる)にしちゃえば閲覧も編集もまあできるんですが、SpreadSheetからのGAS実行は権限が必要になるため、実行ができないのです。
ただ、これを回避する方法は少しだけあって、GASをWebアプリケーションとして公開すれば、(権限が必要な処理以外は)実行できるようになります。
image.png

ビジター共有というものができたらしい

G Suite限定なので今まで気づかなかったんですが、どうも今年になってビジター共有というものができたらしいですね。
これは、今までSpreadSheetの公開範囲を、Googleアカウント持ってる人向けか全体公開かしか選べなかったものが、Googleアカウントでないメアドに限定して公開を行えるという機能です。
注意としては、メールからの一時的な認可なので一定時間たつと権限が消えることです(この場合でも元のメールから再認証行える)

ビジター共有ならGAS動くのか?

はい。これが本稿における本題です。
ちょっと気になったので、やってみました。

SpreadSheetからGASキックする

ボタン配置して、押されたらhtmlを表示するという単純なものです。
内容は、入力フォーム的な利用をしたかったのですが、権限の問題があり確認の必要があったためなんか変な内容ですが、気にしないでください。
image.png
image.png

んで、これをビジター共有したアカウントから見てみましょう。
ビジター共有としてメアドを入力した場合、こういうメールが届きます。
image.png
「Open in Sheets」をクリックするとブラウザが開き、SSが表示されます。
image.png

ちなみに認証が切れるとこういう風になります。この場合は元のメールから再度「Open in sheets」をクリックすることになります。
image.png

さて、実行してみましょう。
image.png
お、行けるか?
image.png
...無念orz

ちなみに、どんなスクリプトでもダメなわけではなく、権限が不要なもの(例:ダイアログ表示)などは実行できるようです。
image.png

まあ、ここまではやっぱりな・・・という感じなんですが。
冒頭で、権限なしでGAS実行するためのもう一つの手段としてWebアプリケーションとして公開するという手があることを書きました。これだと作成者の権限で実行できたりするので本来行けるはずなんですが・・・
先ほどのフォームをgetで公開する世にして、まずは完全なるゲスト状態(アカウント招待なし)でdoGetをたたいてみると
image.png

ちゃんといけます。
が、ビジター共有された状態でこのURL開くと、
image.png
ガーン・・・むしろ劣化してるじゃねえか・・・

結論

ビジター共有はGASの実行権限周りではまだ微妙なようです。修正されるのをお待ちしております。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?