chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

GASでWebAPIを試作、doPostに渡される引数の仕様がよくわからない->そのまま応答文にして確認

課題: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に対して属性名でアクセス可

}