一昨日からエラーが出て動かなくなっていたAmazon在庫チェックツールの修正ができました。
修正のきっかけなど
きっかけになったのは、上記リンク先の記事に頂いたOZさんのコメントです。
その中に挙げられていたWEBSERVICE関数です。
最初にツールを作ろうと思って調べていた時にこの関数の存在を知りましたが、プログラム上で操作できる関数ではなかったのでスルーしていました。
今はツールよりもリサーチをやりたい時期なので修正は後回しにしようと思っていましたが、これならできるかもしれないと思って朝起きてちょっとだけ修正してみました。
これで実行してみると、再び上手いことHTMLソースを取得できて動作するようになりました。
部屋で一人で「ありがてぇ、ありがてぇ」とネットの向こうのOZさんに手を合わせていました(笑)。
修正方法
文法的に間違ったHTMLをIEのinnerHTMLに入れるとエラーになるらしいというので、IE以外でHTMLソースを取得できるならば何でもいいと思っていました。
そこでこのWEBSERVICE関数です。
この関数はシート上で使えるものであってソース上では使えないと思うので(使い方があるのかもしれませんが知らないので)、シートとのやり取りが増えると時間がかかるようになるというのはあったのですがシート上で操作することにしました。
例えば、別シートのA1セルを空白にしておいて、A2セルの内容を「=WEBSERVICE(A1)」にしておきます。
プログラムで、まずASINコードから作ったURLをA1セルにセットして、その後A2セルの内容を読み取ればHTMLソースが取得できるという感じです。
InternetExplorerのオブジェクトを使った場合はサイトが開くまで待つような命令がありましたが、今回はA2セルの文字数が1000文字を超えるまで0.数秒待ってはループするという多少強引なウェイト処理を入れました。
こんなウェイトの判断を行っているので、HTMLソースを変数にセットしたらすぐにA1セルのURLを削除するようにしておきます。
HTMLソースを変数にセットした後は今までと全く同じ処理でいけるので、修正したのはこの部分のみです。
実行してみて
今まで2分ぐらいで終わっていた処理が、今回の修正で3分ぐらいかかるようになったというのはあります。
それでも手作業で何十分もかけて確認するよりはずっと楽です。
しかも手作業だとつきっきりで何十分もかかるのに対して、ツールだと裏で動かしておけばいいだけなので、終わるまでの間に別の作業をすることもできます。
今まで普通に1日2回チェックを行っていたのができなくなると思うと不安になってきて、結局手作業で1日2回チェックを行っていました。
最初は手作業で全件チェックするのに1時間近くかかっていましたが、慣れてくると30分ぐらいでできるようになりました。
ただそれでも30分なので、2回やれば1時間ぐらいになってしまいます。
不安定なツールに頼り過ぎると、そのツールが動かなくなった時にかなり焦るというのが今回分かりました。
それでも応急処置的な対処法はいくつか考えていたので、修正できなかったとしても何とかはなりました。
怪我の功名と言えるかどうか分かりませんが、IEを介さなくなったことでOSや環境に依存しないツールになったのではないかと思います。
今は変なウェイト処理を入れているので、ひょっとしたらまた修正が必要になるかもしれません。
それ以前に配布を考えて作っていないのでエラー処理を全く入れておらず、ABENDもバンバン発生します(笑)。
コメント
くれもなさん、
お役に立てて何よりです。
でもWebservice関数はシート上で使うものでマクロ上では使えないとは
知りませんでした。
Google Apps Scriptはマクロのプログラム内でHMTLの解析処理ができるので
リサーチ用の一覧表を作るには使い易いのですがeBayの検索条件を設定する
GUIの作り方がわからずスプレッドシートのセルに検索条件を書いている関係で
見た目がイマイチです。 それぞれ一長一短がありますね。
Googleスプレッドシートのセルには50000文字までしか書き込めないので
デバッグの時にはhtmlソースが入った変数を短くしてセルに書き込むといった
工夫も必要です。 実はスプレッドシートのマクロに関して
初心者でネットの情報をもとにぼちぼち作っているのが実情です。
eBay APIは英語のドキュメントしかないようですがリサーチ用ツールとして
役立ちそうです。例えばカテゴリーのヒストグラムを検索するAPIを使用すると
化粧品などでどんなブランドが多数出品されているかなどを簡単に
調べることができました。 また販売済みアイテムに絞ってリストを作ると
中国のセラーが信じられない価格で売りまくっていることなどがわかりますね。
(本物か疑問で、私に本物と思うかと聞いてきたSellerがいたほどです)
eBay apiですが、私もエラー処理はほとんど入れていませんので
致命的なエラーが発生したら相手に合わせて対応を取っています。
それではまた
OZ
>OZさん
今回は本当に助けられました。
ありがとうございました。
Webservice関数がマクロ上で使えないと思って試そうともしていなかったのですが、もしかしたらただの思いこみかもしれないと思いました。
そして今試してみましたが、やっぱり関数として認識してくれませんでした。
セルの最大文字数は僕も気にしていて、Webservice関数を使ってAmazonの販売ページのURLを取得したら最後がになっていたので、これなら大丈夫かと思ってそのまま使っています。
eBay APIですでに何か作っているんですね。
僕は新しく何かしようにも、めんどくせーと思ってしまいます(笑)。
なのでよっぽど作業が効率化されるとかでない限り、なかなか腰が重いです。
中国のセラーが異常な安値で売っているものは、基本的に全部偽物だと思いますよね。
証拠がないので断定はできませんが。
くれもなさん、
例えば日本には売りませんと設定された商品は日本からの普通の検索ではヒットしませんがAPIで検索すると見ることが出来てしまいます。
有料のツールを使うほど儲かっていないので自作することにしました。
OZ
>OZさん
使いこなせるようになると、いろいろと自分にあった検索ツールなどできそうですね。
僕もお金を出してツールを買うほどの稼ぎはまだないので、できる範囲では基本的に自作派です。