LoginSignup
3
1

More than 5 years have passed since last update.

MWS 最新のInventoryレポートを取得するにはAPIを4回も叩く必要がある?

Last updated at Posted at 2017-04-01

どういうこと

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

まとめ

まあでもそんなもんやろ

3
1
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
3
1