結論: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()した場合、余計なエスケープがされてエラーが起こりました。
マジで意味がわからないので、今はこれ以上踏み込まないことにします……