LoginSignup
0
0

More than 1 year has passed since last update.

GASでXML形式のデータをpostするときの注意点備忘

Posted at

最終的な成功物

いろいろ試したのですが、僕の場合(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,'&#10;')

ってしてXML用の改行コードに置換してね

0
0
0

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