GASのHTMLページをコードで操作して更新したい
先日web1weekというイベントに参加してGoogle Apps Script上にHTMLを置いてWebアプリを公開したのだが、クライアント(ユーザーのブラウザ)側のJavaScriptのコードで、画面を更新するのに意外と手間取ったので方法をメモしておく。
サーバ側gsコード上で取得する
HTMLをJavaScriptで制御してブラウザ更新するにはlocation.reload()やlocation.href()がよく使われるが、GASの仕様的に制限がかかっていうまく動かないらしい。色々と試してうまくいったのは、以下のwindow.openを使った方法。urlの部分にString型で更新したいHTMLのurlを入れてやればOK。
window.open(url, '_top')
ただ、GASのHTMLをWebアプリとしてデプロイするとき、デプロイするたびにURLが変わってしまうので、事前に手打ちでURLを設定しておくことは難しい。そのため、私はこちらの記事で書いたURLの取得方法でURLをJavaScript上で取得して、それをwindow.openに渡して更新する方法をとった。
サンプルコード
html上でボタンをクリックすると、ブラウザを更新するサンプルコードを以下に置いておく。html上でボタンを押したときに、gs上のgetScriptUrlを呼び出し、呼び出しが成功したらwithSuccessHandlerでブラウザ更新を実行している。
まずhtmlコード。
次にgasコード。
これをデプロイするとブラウザに以下の更新ボタンが表示されて、クリックするとブラウザ更新される。
もっと良い方法がありそうな気はするが、参考になれば。
GASでLINEのボットとかつくってます
GASでLINEのボットをつくった過程を日記としてまとめてます。興味があればぜひのぞいてみてください。