課題:doPostに渡される引数eの内容がよくわからない。デバッグ用のログ出力もよくわからず
結果:そのまま応答文で返すように実装、POST本文は、 e.postData.contentsで取得できると理解
確認用のGASのソース
function doPost(e) { //var params = JSON.stringify(e); //var postContent = e.postData.getDataAsString(); return ContentService.createTextOutput(JSON.stringify(e)).setMimeType(ContentService.MimeType.JSON) }
API実行コマンド
curl -X POST -H "Content-Type: application/json" -H "myarg: i_dont_know" -d "{1234 : 5678}" $URL
応答文(直接は返却されず、redirect先のURLにアクセスすると受け取れる)
{ "parameters": {}, "contextPath": "", "parameter": {}, "postData": { "contents": "{1234 : 5678}", "length": 13, "name": "postData", "type": "application/json" }, "queryString": "", "contentLength": 13 }
上記より、POSTの本文は、e.postData.contentsで取得できる。また、リクエストヘッダの値はdoPostには渡されない
■追記
以下のコードでJSON形式の本文(文字列)をオブジェクトに変換できると理解
function doPost(e) { var data = JSON.parse(e.postData.contents); // dataに対して属性名でアクセス可 }