MWS 最新のInventoryレポートを取得するにはAPIを4回も叩く必要がある?
どういうこと
最新のInventoryレポートを取得するだけでも、なんとAPIを4回叩く必要がある。
セラーセントラルのInventoryマネージャーを使ったことがある人であればイメージできると思うけど、
セラーセントラルからレポートを取得する場合は
レポート作成リクエスト→完了を待つ→レポート取得
という流れ。
今回MWSからレポートを取得する場合は
-
レポート作成リクエスト(RequestReport)
-
完了を待つ(GetReportRequestList)
-
最新のレポートの選定(GetReportList)
-
レポート取得(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_になれば次へ進むって感じの実装になるかな。
<font color="Red">※正確に最新じゃなくていいって場合は、
「RequestReportで作成リクエスト出して1時間待つ」みたいな実装でGetReportRequestListで状態を確認するフェーズをとばすことができる。</font>
GetReportList
項目 | |
---|---|
Action | GetReportList |
ReportType | 出品レポート(GET_FLAT_FILE_OPEN_LISTINGS_DATA) |
レスポンス | XML |
指定したReportTypeの作成済みレポートの一覧を取得できる。
一番上が最新なのでそこのReportIdを取得する。
ReportRequestIdListで指定できるけど、一番上が最新なので指定する必要はない。
GetReport
項目 | |
---|---|
Action | GetReport |
ReportId | GetReportListで取得したReportId |
レスポンス | テキストタブ区切り |
GetReportListで取得したReportIdを指定してInventoryレポートを取得。
テキストタブ区切りで返ってくる。CSVがよかったなあ
まとめ
まあでもそんなもんやろ
Discussion