Google Apps Script(以下GAS)にて、doGet( )でGETリクエストに対してJSONを返す感じのアプリを作り、Linux系OSのマシンから直接curlしてアレコレしたかった時に遭遇したのでメモ。
doPost( )だともう少しややこしい気がするので、リクエストヘッダ読んだりして頑張りましょう。
#課題
GASで公開したウェブアプリケーションのURLに対し、特にオプション等をつけずに、
$ curl https://~略(GASアプリケーションのURL)
とすると、
<HTML>
<HEAD>
<TITLE>Moved Temporarily</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Temporarily</H1>
The document has moved <A HREF="https://~略">here</A>.
</BODY>
</HTML>
こんな感じのレスポンスが返ってきて、本来受け取るはずだったレスポンスが受け取れない、みたいなことになります。
GASの仕様上、
The document has moved <A HREF="https://~略">here</A>
この部分に書かれたURLの先へリダイレクトしてからデータの受け取りなどを行うようになっているようで。
curl
コマンドのデフォルトではリダイレクトを行わないため、上記のようなレスポンスが返ってくる結果となってしまいます。
解決策
リダイレクトさせる-L
オプションをつけてcurlする。これだけ。
$ curl -L https://~略(GASアプリケーションのURL)