追記
HtmlService.SandboxMode.IFRAME
が登場して、この記事の内容が古いものになっていますので、ご注意願います。
そもそも
google apps script(以下gas)のWebアプリケーションは、Google Siteに埋め込んで使用する目的のものだ、とどこかで聞いたことがある、うん確か。
なので、「一般的なWebアプリケーションが手軽に作れる!」などと夢見て手を出すと痛い目を見ることになりますよ、的な(自戒を含めた)話。
単画面Webアプリケーションしか作れない
1プロジェクトに1URLなので、HTMLやUIをいくつこさえようが遷移する術がない。
擬似的にPanel
や<div>
を切り替えて複数画面があるかのように振舞うこと方法もあるが、コードは冗長になる。
http://d.hatena.ne.jp/stoikheia/20130409/1365476481
-stoikheia(@3xv)の日記
サーバー側への通信方法が限定的
UiApp
で画面を構築するなら同期的なForm
とSubmit
、HtmlService
ベースでいくならgoogle.script.run
を使った非同期的なものがデフォルトとなる。
いろいろ効率悪い
<html>
や<head>
、<body>
が書けないのも然ることながら、css、jsの外部化ができない。
(一応できるけど何だコレ)
https://developers.google.com/apps-script/guides/html/best-practices?hl=ja#separate_html_css_and_javascript
HTML Service: Best Practices - Separate HTML, CSS, and JavaScript
(urlにhl=ja
と入っていますが英語です)
外部ライブラリがほとんど使えない
jQueryだけは唯一まともに動くが、他のライブラリは(例えばTwitter Bootstrapなど)は限定的、もしくは全然機能しないことを覚悟しておいたほうがいい。
https://developers.google.com/apps-script/guides/html/best-practices?hl=ja#take_advantage_of_jquery
HTML Service: Best Practices - Take advantage of jQuery
(urlにhl=ja
と入っていますが英語です)
なお、無理矢理Twitter Bootstrapをgasに対応させたHackもある。(私は未検証)
https://sites.google.com/site/gashackja/gas-bootstrap
Google Apps Script Hacks - GAS-Bootstrap
デバッグしにくい(しんどい)
gasで複雑なアプリを作ることは少ないのだろうと思うが、基本的にサーバー側(gs)は、ブレークポイントを置いたステップ実行やLogger
でログを確認しながらのデバッグとなる。
パフォーマンスの確認には実行トランスクリプトがあるが、遅いのはだいたいブラックボックス部分なため、人は諦めを覚える。
フロント側はGoogle Chromeのデベロッパーツールに頼るしかない。
cajaなのでソース見ても難読怪奇、クライアントスクリプトはalert
使って確認するぐらいしかない。
(私が他の方法を知らないだけかも)
その他gasやcajaの仕様に基づくもの
私が遭遇した一部を紹介したい。
- viewportを設定してスマートフォン最適化 → できない。余白を楽しみましょう。
- font awesome使って可愛らしく → できない。「x」とか「v」とか「o」とか「>>」とかでお茶を濁しましょう。
- DialogやLightboxでかっこよく → できない。不思議な位置に出現するかまったく機能しないのを、笑顔で眺めましょう。
- DropboxのJavascript Chooser APIとかで外部データを利用 → できない。まったく機能しないので無駄にボタン連打して遊びましょう。
多分、試してないだけでいろいろ制限がある。
まとめ
一般的なWebアプリケーションは作るには制限が多すぎる。
というか、用途が違うものを無理矢理使っていることを念頭に置いて、それを忘れないようにしないといけない(反省)。
でも、その制限の中で簡易なものを作る分にはすごく便利であることに間違いはないと思う。
しかし日本語ドキュメント少ないよね!
気が向いたらTips的な記事も投稿したいと思う。気が向いたら。