最終的な成功物
いろいろ試したのですが、僕の場合(portersというツールのAPI)はこれでうまくいきました
var header = {
'X-porters-hrbc-oauth-token': *ここにToken*,
'Content-Type':'application/xml; charset=UTF-8'
}
var option = {
method: 'post',
payload: *ここにXML形式のデータ* ,
headers: header,
contentType:'application/xml; charset=utf-8'
}
var res = UrlFetchApp.fetch(url,option)
ポイント
1つめ
'Content-Type':'application/xml;
の部分は、'Content-Type':'application/json;
にしたりして試しましたが無理でした。~xml
とするのが正解ですね
2つめ
payload
の部分はdata
って書くのかなと思っていましたが、これもpayload
が正解
3つめ
XML形式のデータについては改行やスペースを入れるの厳禁です。
var data = `
<Job>
<Item>
<Job.P_Id>-1</Job.P_Id>
<Job.P_Owner>1</Job.P_Owner>
<Job.P_Client>12345</Job.P_Client>
<Job.P_Memo>これは、テストメモになります ほげほげ</Job.P_Memo>
</Item>
</Job>
`
var header = {
'X-porters-hrbc-oauth-token': *ここにToken*,
'Content-Type':'application/xml; charset=UTF-8'
}
var option = {
method: 'post',
payload: data,
headers: header,
contentType:'application/xml; charset=utf-8'
}
var res = UrlFetchApp.fetch(url,option)
こんな感じでdata
を定義すると、エラーになりました。
見ての通りdata
の中に空白やら改行やらがあるためです。
空白や改行は
data.replace(/[\r\s]+/g,'')
で一括で消してからpostしました
※もし複数行テキストエリアデータなどで改行を消したくない場合は
.replace(/[\r\n]+/g,' ')
ってしてXML用の改行コードに置換してね