2016-03-23 2 views
3

販売日数と販売日数の間に売上高があり、販売数量があるすべてのSKUの一覧が必要です。私は何をすべきか混乱しています。このためにAmazon MWS Order APIを使用するのか、それともReport APIを使用すべきですか?誰かが、レポートが要求され、さらなる処理、つまりデータベースにデータを保存するために私の最後にダウンロードされる方法を示すC#コードを持っていますか? ご協力いただければ幸いです。SKU番号と総販売数量を取得するためのAmazon Order APIまたはReport API?

p.s.私は大量のデータを持っています

更新:私はこのコードを書いて、レポートタイプを取得してデータを保存しました。今

private const string targetRptType = "_GET_CONVERGED_FLAT_FILE_ORDER_REPORT_DATA_"; 

try 
{ 
    RequestReportRequest reportRequestRequest = new RequestReportRequest(); 
    reportRequestRequest.Merchant = merchantId; 
    reportRequestRequest.ReportType = targetRptType; 
    reportRequestRequest.StartDate = DateTime.Now.AddDays(-3); 
    reportRequestRequest.EndDate = DateTime.Now; 

    MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); 
    config.ServiceURL = "https://mws.amazonservices.com"; 

    MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, applicationName, applicationVersion, config); 

    RequestReportResponse requestResponse = service.RequestReport(reportRequestRequest); 
    Thread.Sleep(15000); 
    Response.Write(requestResponse.RequestReportResult.ReportRequestInfo.ReportProcessingStatus); 
    GetReportRequestListRequest reportRequestListRequest = new GetReportRequestListRequest(); 
    reportRequestListRequest.Merchant = merchantId; 
    List<ReportRequestInfo> myListzz = new List<ReportRequestInfo>(); 

    GetReportRequestListResponse reportRequestListResponse = new GetReportRequestListResponse(); 
    reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest); 
    GetReportRequestListResult reportRequestListResult = new GetReportRequestListResult(); 
    reportRequestListResult = reportRequestListResponse.GetReportRequestListResult; 
    myListzz = reportRequestListResult.ReportRequestInfo; 
    while (myListzz[0].ReportProcessingStatus.ToString() != "_DONE_") 
    { 
     Thread.Sleep(20000); 
     reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest); 
     reportRequestListResult = reportRequestListResponse.GetReportRequestListResult; 
     myListzz = reportRequestListResult.ReportRequestInfo; 
    } 

    GetReportListRequest listRequest = new GetReportListRequest(); 
    listRequest.Merchant = merchantId; 
    listRequest.ReportRequestIdList = new IdList(); 
    listRequest.ReportRequestIdList.Id.Add(requestResponse.RequestReportResult.ReportRequestInfo.ReportRequestId); 

    GetReportListResponse listResponse = service.GetReportList(listRequest); 


    //MessageBox.Show(listResponse.GetReportListResult.ReportInfo.ToString()); 
    GetReportListResult getReportListResult = listResponse.GetReportListResult; 

    GetReportRequest reportRequest = new GetReportRequest(); 
    reportRequest.Merchant = merchantId; 
    reportRequest.WithReportId(getReportListResult.ReportInfo[0].ReportId); 

    GetReportResponse reportResponse = new GetReportResponse(); 
    try 
    { 
     reportRequest.Report = File.Open("C:\\AmazonReport.csv", FileMode.OpenOrCreate, FileAccess.ReadWrite); // Getting error access to path denied 
     reportResponse = service.GetReport(reportRequest); 
    } 
    catch (MarketplaceWebServiceException exe) 
    { 
     Response.Write(exe); 
    } 
    StreamReader sr = new StreamReader(reportRequest.Report); 
    Response.Write(sr.ReadToEnd()); 
    sr.Close(); 

} 
catch (MarketplaceWebServiceException ex) 
{ 
    Response.Write(ex.Message); 
} 

を「パスへのアクセスが拒否される」エラーが誰でも自分のコードをチェックして、このレポートからデータを取得するための正しい方法であれば提案してくださいことはできますか?私はまだレポートを保存することができません。私はパスを変更し、現在エラーがなくなっていると、ファイルが作成されますが、それは2つのレコードを持つだけで1キロバイトのファイルである

UPDATE 2
...それは完全なデータをフェッチされていないように見えます。コードが正しいかどうかはわかりません。スクラッチパッドでこれを確認するhttps://mws.amazonservices.com/scratchpad/index.html

+0

はい、私は同意します。最初はOrders APIを使用していましたが、これは常に多くの時間がかかり、調整エラーが発生し、何度もデータを取得しませんでした。レポートAPIを使用してすべての面倒を解決するように勧められた人もいます。私はそれに取り組んでいます - 彼らは材料がありますが、私はC#で物事を書く方法としてコード例を探していました。わかりやすいものを見つけられなかったので、誰かがすでに働いていて、いくつかのインプット/提案があるかどうか疑問に思っています。とにかくリンクをありがとう。 – user1254053

+0

私はReport APIから販売データを取得することに固執しています。_GET_FLAT_FILE_ORDERS_DATA_からデータを取得し、データを取得する方法を説明する簡単なC#コードサンプルを探したいと思います。 – user1254053

+0

また、「レポートに要求されてダウンロードされた方法を示すコードが誰にもありますか?」 – user1254053

答えて

-1

私の意見では、Orders APIを使用するとかなり簡単になります。日付範囲を使用して注文をリクエストし、必要なものすべてを手に入れることができます。

+1

_p.s。大量のデータがあります。大量のデータでOrders APIが削除されています。 Reports APIのドキュメントを参照すると、Reports APIを使用して200を超えるオーダーを引っ張らなければならない行に沿って何かが記述されている参照があります。 –

0

レポートを現在の作業ディレクトリに保存します。 C:\へのアクセスは、管理者として実行している場合を除き、通常はロックダウンされます。明示的にする場合は次のようにします(ファイル名のみを指定し、完全に正当なパスではない場合は現在の作業ディレクトリにも保存します)

reportRequest.Report = File.Open(Path.Combine(Directory.GetCurrentDirectory(), "AmazonReport.csv"), FileMode.OpenOrCreate, FileAccess.ReadWrite);