Amazon MWS 最新のInventoryレポートを取得するだけでも、なんとAPIを4回叩く必要がある

どういうこと

最新のInventoryレポートを取得するだけでも、なんとAPIを4回叩く必要がある。
セラーセントラルのInventoryマネージャーを使ったことがある人であればイメージできると思うけど、
セラーセントラルからレポートを取得する場合は
レポート作成リクエスト→完了を待つ→レポート取得
という流れ。

今回MWSからレポートを取得する場合は

  1. レポート作成リクエスト(RequestReport)

  2. 完了を待つ(GetReportRequestList)

  3. 最新のレポートの選定(GetReportList)

  4. レポート取得(GetReport)

こんな流れ!
各アクションがどんなものか簡単に紹介しておこうかと。

RequestReport

項目
Action RequestReport
ReportType 出品レポート(_GET_FLAT_FILE_OPEN_LISTINGS_DATA_)
レスポンス XML

指定したReportTypeのレポートの作成リクエストを送信する。
RequestIdを取得できる。

GetReportRequestList

項目
Action GetReportRequestList
ReportRequestIdList RequestReportで取得したRequestId
レスポンス XML

色々な使い方があると思うけど、
今回はReportRequestIdListにRequestReportで取得したRequestIdを設定することで、レポート作成の進捗状況を確認する。
進捗状況を示すステータスは以下の種類がある。

  • _SUBMITTED_
  • _IN_PROGRESS_
  • _CANCELLED_
  • _DONE_
  • _DONE_NO_DATA_

数分に1回ステータスを見に行ってDONEになれば次へ進むって感じの実装になるかな。

※正確に最新じゃなくていいって場合は、
「RequestReportで作成リクエスト出して1時間待つ」みたいな実装でGetReportRequestListで状態を確認するフェーズをとばすことができる。

GetReportList

項目
Action GetReportList
ReportType 出品レポート(GET_FLAT_FILE_OPEN_LISTINGS_DATA
レスポンス XML

指定したReportTypeの作成済みレポートの一覧を取得できる。
一番上が最新なのでそこのReportIdを取得する。
ReportRequestIdListで指定できるけど、一番上が最新なので指定する必要はない。

GetReport

項目
Action GetReport
ReportId GetReportListで取得したReportId
レスポンス テキストタブ区切り

GetReportListで取得したReportIdを指定してInventoryレポートを取得。
テキストタブ区切りで返ってくる。CSVがよかったなあ

まとめ

まあでもそんなもんやろ