俺でもできるもんな

独立系SI企業から完全異業種のベンチャー企業に転職、社内のITインフラを整えるべく颯爽と登場した自称天才プログラマー俺のハートフルブログ

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がよかったなあ

まとめ

まあでもそんなもんやろ