LoginSignup
0
0

GASでAPIを叩きたくてエラーが直らなかった話

Posted at

結論:JSON.stringify()したら直った!

そのままですね。
GASエディタ上でリクエストbodyをJSON形式で記述していたのですが、実際に格納されていた値がJSON形式でなくなっていました。ということです。

GASでの記述

let headers = {
  ~省略~
};

let body = {
  "hoge" : "fuga",
  "hogege" : [
    {
      "fugaga": "hogefuga"
    }
  ]
};

let options = {
  methopd: "post",
  headers: headers,
  payload: body
}

let response = UrlFerchApp.fetch(url, options); // ここでエラー"INVALID DATA RECEIVED"

実際にbodyに格納されていた値

{
  hoge : 'fuga',
  hogege : [
    {
      fugaga: 'hogefuga'
    }
  ]
}

こうすると直った

let body = JSON.stringify({
  "hoge" : "fuga",
  "hogege" : [
    {
      "fugaga": "hogefuga"
    }
  ]
});

なぜ……?
原因はわかりませんが理由はわかったので、実装を進めることにします……
ちなみに......
この後、body内容をスプレッドシートから読み取るようにしたら、上記の問題は起こりませんでした。
GAS上で記述した時に起こります。
更に、スプレッドシートから取得した値をJSON.stringify()した場合、余計なエスケープがされてエラーが起こりました。

マジで意味がわからないので、今はこれ以上踏み込まないことにします……

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0