一部エラーが発生
var url = "https://api.ebay.com/ws/api.dll";
var xmlRequest = '<?xml version="1.0" encoding="utf-8"?>' +
'<GetMyeBaySellingRequest xmlns="urn:ebay:apis:eBLBaseComponents">' +
'<RequesterCredentials><eBayAuthToken>' + userToken + '</eBayAuthToken></RequesterCredentials>' +
'<ActiveList>' +
'<Include>true</Include>' +
'<Sort>TimeLeft</Sort>' +
'<Pagination>' +
'<EntriesPerPage>200</EntriesPerPage>' +
'<PageNumber>1</PageNumber>' +
'</Pagination>' +
'</ActiveList>' +
'</GetMyeBaySellingRequest>';
var options = {
'method': 'post',
'contentType': 'text/xml',
'payload': xmlRequest,
'headers': {
'X-EBAY-API-SITEID': '0',
'X-EBAY-API-DEV-NAME': X_EBAY_API_DEV_NAME,
'X-EBAY-API-APP-NAME': X_EBAY_API_APP_NAME,
'X-EBAY-API-CERT-NAME': X_EBAY_API_CERT_NAME,
'X-EBAY-API-COMPATIBILITY-LEVEL': '967',
'X-EBAY-API-CALL-NAME': 'GetMyeBaySelling',
}
};
上記でコールすると・・・
<Errors><ShortMessage>Data is truncated.</ShortMessage><LongMessage>Partial data or invalid summary data is returned due to system limit. Please narrow your requested data and try again.</LongMessage><ErrorCode>21366</ErrorCode><SeverityCode>Warning</SeverityCode><ErrorClassification>RequestError</ErrorClassification></Errors>
「システムの制限により、部分的なデータまたは無効な概要データが返されます。要求したデータを絞り込んで再試行してください。」
と出てしまう。
これは、商品点数が25000点を超える場合に発生する。
GetMyeBaySellingではなく、「GetSellerList」のAPIを使うことで回避できます。
コードは
var url = "https://api.ebay.com/ws/api.dll";
var xmlRequest = '<?xml version="1.0" encoding="utf-8"?>' +
'<GetSellerListRequest xmlns="urn:ebay:apis:eBLBaseComponents">' +
'<RequesterCredentials>' +
'<eBayAuthToken>' + userToken + '</eBayAuthToken>' + // eBay Auth Token をここに挿入します
'</RequesterCredentials>' +
'<EndTimeFrom>' + currentDateFormatted + '</EndTimeFrom>' +
'<EndTimeTo>' + threeMonthsLaterFormatted + '</EndTimeTo>' +
'<Pagination>' +
'<EntriesPerPage>200</EntriesPerPage>' +
'<PageNumber>' + page + '</PageNumber>' +
'</Pagination>' +
'<IncludeWatchCount>true</IncludeWatchCount>' +
'<DetailLevel>ReturnAll</DetailLevel>' + // DetailLevelをReturnAllに設定
'<OutputSelector>ItemArray.Item.ItemID</OutputSelector>' + //アイテムID
'<OutputSelector>ItemArray.Item.Title</OutputSelector>' + //タイトル
'<OutputSelector>ItemArray.Item.ListingDetails.StartTime</OutputSelector>' + //開始時刻
'<OutputSelector>ItemArray.Item.HitCount</OutputSelector>' + //PageView
'<OutputSelector>ItemArray.Item.SellingStatus.QuantitySold</OutputSelector>' + //総販売数
'<OutputSelector>ItemArray.Item.WatchCount</OutputSelector>' + //WatchCount
'<OutputSelector>ItemArray.Item.SKU</OutputSelector>' + //SKU
'<OutputSelector>ItemArray.Item.Quantity</OutputSelector>' + //在庫数
'<OutputSelector>ItemArray.Item.BuyItNowPrice</OutputSelector>' + //USDの判別
'<OutputSelector>ItemArray.Item.ProductListingDetails.UPC</OutputSelector>' + //USDの判別
'<OutputSelector>ItemArray.Item.UPC</OutputSelector>' + //USDの判別
'<OutputSelector>PaginationResult.TotalNumberOfPages</OutputSelector>' +
'<OutputSelector>ItemArray.Item.Country</OutputSelector>' +
'<OutputSelector>ItemArray.Item.SellingStatus.CurrentPrice</OutputSelector>' +
'</GetSellerListRequest>';
var options = {
'method': 'post',
'contentType': 'text/xml',
'payload': xmlRequest,
'headers': {
'X-EBAY-API-SITEID': '0',
'X-EBAY-API-DEV-NAME': X_EBAY_API_DEV_NAME,
'X-EBAY-API-APP-NAME': X_EBAY_API_APP_NAME,
'X-EBAY-API-CERT-NAME': X_EBAY_API_CERT_NAME,
'X-EBAY-API-COMPATIBILITY-LEVEL': '1271',
'X-EBAY-API-CALL-NAME': 'GetSellerList',
}
};
OutputSelectorで絞り込みを行うとAPIを節約できるそうです。
なお、200点までなのでなんやかんやで、かなり185件前後回さないといけない。
注意点としては、15秒で300回まわすとアプリがブロックされるようなので、注意が必要。
また、別記事で「GetSellerList」のUPC、EANなどが取得できるか問題について言及するので、見てください。
コメント