PHPにてNotice:Undefined offsetエラー時の対応


PHPにて”Notice: Undefined offset”エラーが発生した場合の対応方法ですが、配列で定義の無い要素を指定した場合などです。
私の場合は、

と使っていました。rand(0, count($str))で、count($str)が要素数を返すのですが、配列は0から始まるのでカウントで10個要素があった場合も、配列の指定hは0~9までとなるので”Notice: Undefined offset”エラーが発生していました。
以下のように、最初にカウントから-1を引いて最大数値にするとエラーがなくなりました。

rand(0, $max_count)として、$max_count = count($str) -1;で予め-1することでエラーが発生しなくなりました。

(23)MWSの各リクエスト処理性能


MWSの各リクエスト処理性能の処理性能について調べ方をお伝えします。

MWSの処理種別「商品」について解説します。「商品」では商品のタイトルや最低価格などが取得できますので大量の商品を調べたい場合に大量のアクセスをする必要がありますが、セラー毎にAmazonで許容されている処理性能があります。
まずはAmazonの技術資料でこちらをご覧ください。
srotle
スロットルというのが各リクエストの処理性能になります。
処理性能値はこの表に出ているとおりですが、例えば最低料金を調査する場合に”GetLowestOfferListingsForASIN”を使っていたとすると、1秒間に10商品になります。1アクセスで最大20商品を問い合わせることが出来ますので、最大20商品のリクエストの場合は2秒に一度しかリクエストを送信できないことになります。
プログラムで制限をかけずにアクセスすると大量にAmazonに届いてしまいエラーになりますので注意してください。

各処理種別ごとに許容性能がありますので、大量アクセス時は処理性能内にプログラミングするのが最も効率よくアクセスできますので注意してください。

(22)MWS実践-商品(最低価格)-Excel-VBA


AmazonのMWSで出品リストを取得するサンプルプログラムを提供します。Amazonライブラリを使わずにExcel-VBAで製作していますので、カスタマイズされたい方にお勧めです。
PHP版ではMWSの主な全処理を製作しておりますが、Excel-VBAは本ページでMWSの製作紹介しますので、その他の処理は本プログラムを参照し各自で製作頂ければと思います。MWS自体の処理の流れや仕組みはPHPとExcel-VBAなどプログラム言語で差分はありませんので、本ページのExcel-VBAの製作がわかれば各自で製作頂けると思います。

MWSの商品処理はフィードやレポートのように要求を依頼して状態を確認、結果取得のような一連のフローではなく、リクエストに対して即時に情報を返してきますので、普通のREST-API(リクエストとレスポンス)が1回だけで非常にシンプルです。

動作はWindowsOS上で確認していますが、基本的にはExcelが使えればどこでも動くはずです。MWSのシートにMWS登録で取得したIDを記載して実行してください。
A列にはASINを任意に記載して実行すればB列に最低価格が取得できるようになっています。基本は出来ていますので少し変えればタイトルでも何でも情報を取得できると思います。
また、今回はMWSの”GetLowestOfferListingsForASIN”で最低価格を取得していますが、基本情報の取得”GetMatchingProductForId”などもほぼ同じようにプログラムできますので参考に自由に変更してください。

以下に製作したExcelとプログラムを記載します。
Excelサンプル