#新卒エンジニア、闇(GAS)の炎(トラップ)に身を焼かれる
新卒エンジニアが初めてフロントエンド開発にチャレンジして、ことごとく落とし穴にハマったのでGASの闇仕様について説明します
※本記事はウェブアプリケーション利用の話です
##GASとは
Google Apps Scriptの略でスプレッドシートの操作、サーバサイドの処理、Botの作成等いろいろできます。ただし、いろんな制約ありで**(ここ重要)**
##成果物
成果物 (※GoogleChrome対応)
成果物の詳細
自分の歌える曲をリスト化したもの(カラオケやデュエットで使う個人用)
スプレッドシートのデータをGASでJSONP形式にして、jQueryで処理させています
正直、本記事のメインテーマではないので興味があれば詳細をどうぞ
ここからが本題で、GASの闇について説明します
##承認編
GASは初回実行時に承認を求められます(詳細は後述のリンク)
私の成果物は「GASでJSONPを取得する」という仕組みがあります。この「承認」がうまくいかない場合、GASは実行されず、JSONPが取得できずメインの機能(歌える曲の一覧)が表示されなくて死にます\(^o^)/オワタ
###【トラップ①】GASをウェブアプリケーションとして実行する場合、最初に承認が必要になる
全ての元凶はコイツです。この仕様は初見狩りの役割を果たします
###【トラップ②】再承認を求められることがある
これは自分もありました。再承認が求められる=いつの間にかサイトが表示できなくなっているという恐ろしさです。
なぜかGASの闇仕様について書いてる記事って多くないんですよね。まさかみんなGoogleに口封じされて……おっと、誰か来たようだ
###【トラップ③】対応させたい全ブラウザで承認が必要
例えばパソコン版GoogleChromeで承認したとします。だが、スマホ版Chromeは表示できずに死んでいる(承認したOS、ブラウザが違うとGASが実行されません)
つまり、対応させたい対象の全ブラウザで承認しないといけません
###【トラップ④】承認したブラウザでキャッシュを消したら死ぬ
例えばスマホ版Chromeで承認していたとします。だが、キャッシュを消すだけで死ぬ
なぜGoogleは承認した判定をキャッシュ消しただけで消える仕様にしたのでしょう
###【トラップ⑤】iPhoneを持っていないなら、スマホ版Safariの承認ができないので死ぬ
ブラウザ毎で承認が必要=iPhoneがないとSafariの承認は不可能
成果物にGoogleChrome対応と書いた理由がここにあります
##バージョンアップ編
あなたはGASのソースコードを編集し、保存し、そして実行したとします
だが、実行結果は編集前と変わらない
###【トラップ⑥】ソースコードを変更してもバージョンを変えないとデプロイされない
※試していませんが回避する方法もあるようです
##G Suite編
###【トラップ⑦】Google Driveと同じ範囲でしか公開できない
GASやスプレッドシートはGoogle Drive上のデータです。組織用アカウント(学校や会社等)で管理者が公開範囲を組織内部のみに設定していた場合、ウェブアプリケーションとして導入しても社外の人間はアクセスできません
##【結論】GASにサーバサイドのような使い方をさせるべきではない
個人利用の開発や最初に挙げたような利用方法は除いて、自分のウェブアプリにGASの機能を活用するのは大変リスキーです。
意外とGAS利用時の注意事項をまとめている記事がないと思いました。ほかにもこういう落とし穴あるよってコメントも待っています!
##【追記】
直接GASを呼び出さない方法なら大丈夫です。今回ならサーバがcronでJSONをスクレイピングして保存したものを公開すれば問題ないわけですね!なんか頭悪い方法!