自分用に作成したPC版メルカリの自動操作ツール(VBA)の解説


ということで、自分用に作ったメルカリ自動操作用ツールの解説です。考え方や注意点などの紹介となります。

開発経緯

企業が開発しているウェブベースのツールだったり、個人が開発している実行ファイル形式のツールだったりと、メルカリの自動化ツールなんて世の中に大量に出回っています。(規約改訂で半数近くが消えていきましたが)

なぜわざわざ一から作ろうと思ったのか。

だって・・・他人が儲けるのって悔しいじゃないですか!!!

ツールを販売しているのが個人だと特に!!

・・・心が狭い?知ってます。

それに月額制っていうのが好きではないことも原因の一つですね。高いツールだと月額1万円以上掛かるらしいですし。

以前は私も「メルポン」を利用していたのですが、月額会員にはなっていなかったので出品の度に15円の費用が掛かっていました。他にも出品後の商品の管理のし辛さであったり、レスポンスが遅く修正に時間が掛かったりと色々ストレスを感じていたこともあり、2ヶ月程で見切りを付けました。

ちなみに今回完成させる物は自動操作を行って「出品させる部分だけ」なので、リストの連続出品や再出品の仕組みについてはご自身で追加してみて下さい。ForとかDoとかを使えば簡単に作れます。

また、このツールは「SendKeys」を多用しています。そのため配布するプログラム等にはあまり適さないため、「使えるなら何でもいい!なりふり構わない!」という方のみ読み進めて下さい。


スポンサーリンク

商品登録画面の操作方法

通信を解析してAPIを割り出して・・・なんてことはしません。今回の登録は”画面操作”を行っての登録となります。

画面を確認すると、以下の3つの形式の入力操作を行う必要があることが分かると思います。

  1. 画像ファイルアップロード用ダイアログの操作

     
  2. 商品名などのテキスト入力操作

     
  3. 出品カテゴリなどのプルダウンメニュー操作

     

ダイアログの操作についてはメルカリに限らずどの場所でも使用する可能性のある汎用性の高い処理であるため、別記事にて紹介しています。
VBAでファイル選択ダイアログを自動操作する(新しいタブで開きます。)

では今回は2、3の内容について実装していきましょう。

テキスト部分の入力操作

早速ページ上のソース部分を確認してみましょう。

「<input class=”input-default” value=”” placeholder=”商品名(必須 40文字まで)”>」

上記の部分が商品名のinputタグです。

class名に使用されている「input-default」は価格入力用のタグでも使用されているため、「placeholder」に「商品名」という文字列があるかどうかでチェックします。

「obj.Value = d.name(商品名文字列)」と記述すると見た目上は値がセットされていますが、カテゴリの変更や画像の登録などの画面情報が更新される操作を行うと、先ほどセットした商品名が消えてしまいます。

これは、ユーザーの操作に対応して実行されるjavascript等が動いて無いためだと思われます。分かりやすいのは販売価格を入力した時ですね。

販売価格を手入力すると、本来であれば以下の画像の様に「販売手数料」と「販売利益」の値が自動的に計算されて表示されます。

じゃあjavascriptを動かすために「fireEvent( “onchange” )」で動かせばいいのかな?と思い試してみたのですが・・・うーん反応しない。それでフォーカスした後に値をセットしてみたり、入力箇所をクリックしてみたりと色々試してみたのですが、手入力の様に自動計算はしてくれませんでした。

なので仕方無く、

「フォーカスして値をセット」 ⇒ 「SendKeysで適当な文字を入力」 ⇒ 「SendKeysで先ほど入力した文字を削除」

という方法を用いています。

現在この処理で数千件の出品を行っていますが、今の所SendKeysの誤作動は特にありません。また、万が一SendKeysがうまく入らずに商品名等の値が消えてしまっても、テキスト入力部分は全て”必須項目”のため出品が行われることはありません。安心して使って下さい。

以上の手順で「商品名」と「商品説明」についてはクリアできました。

販売価格の欄はこれでも動いてくれなかったため、値の入力からSendKeysで行っています。注意点として、例えば「3,000円」を入力したい場合は

としてもうまくいきません。「300」を入力した時点で自動計算処理が走ってしまうため、その際の若干の処理ラグにより直後の入力が反映されず、最後の「0」が落ちてしまうことがあります。

この場合は、値の入力後 or 入力前に若干の待機時間を設ける処理を追加しましょう。

この様にすれば問題ありません。大体200ms程度の間隔であれば十分でした。

ちなみに「SendKeys使わなくてもいけるよ!」という方がいたらぜひ方法を教えて下さい。(^^;

完全に自分用として作ったものなのでSendKeysで妥協して仕上げましたが、使わずに済むのであればその方が良いですね。

プルダウン項目の操作

こちらもテキスト同様、値をただセットするだけではjavascriptが動いてくれません。そのため、SendKeysで動かすことがメインになります。

{TAB}と{DOWN}の組み合わせで設定できる様にしましょう。

あぁ・・・こんな処理を堂々と公開するなんて凄く嫌なんですが、他に良い方法が見つからないんですよ・・・

プルダウン項目の設定についてはこれだけなのですが、ここはSendKeysを多用するため特に注意が必要となります。

例えばカテゴリ1の値を選択する場合、エンタメ・ホビーの項目ではフォーカス後「SendKeys {DOWN 5}」と記述すれば設定できますが、何らかの理由で{DOWN}が4つしか送信できなかった場合は別のカテゴリになってしまいます。

残念ながら幾つ送信できたかを検知することはできませんが、カテゴリが正しく設定できたかどうかであれば判定することができます。

カテゴリのプルダウンについては上図の様な構成になっているため、

selectタグを抽出してclass名に「select-default」が設定されているものを探します。しかしこれだけではカテゴリ1のプルダウンを特定することができませんので、andで別の条件も追加してみます。

この様に、カテゴリ1の中だけに存在する選択肢文字列を追加判定することで、目的のカテゴリのオブジェクトを判別することができます。後は「Value」の値が目的のものと一致しているかどうかを判定するだけです。

※「Value = 5」はエンタメ・ホビーの値

上のソースではメッセージを表示させた後に「End」で処理を停止させていますが、ページを更新させて最初からセットし直す様に自動化しても良いと思います。

まとめ

いかがでしょうか。

値のセット部分はSendKeysがメインとなっていますが、「プルダウン項目の操作」で記述した様に”値が正しくセットされているかどうかの確認”さえしっかりと行えば、不安定と言われるSendKeysでも安定した稼働が見込めるはずです。

しかし、操作対象のウィンドウ(IE)をアクティブにしていないといけないため、別の作業ができないなど他のデメリットは多数存在します。

配布用には向きませんが、個人で使用する分には十分だと思いますのでぜひ参考にしてみて下さい。


スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする