VBAによるラクマの自動出品化に成功!その方法を公開


以前、以下の記事でメルカリをVBAで操作するための方法を書きました。

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

VBAでファイル選択ダイアログを自動操作する

今回は同じフリマアプリの「ラクマ」を対象として、自動出品ツールの作成に挑戦しました。

結果から言うと10品程テストして10品全て内容の誤りも無く登録が完了しましたので、「成功」と言っていいと思います。

本記事はPC版のラクマに関する記事となります。また、VBAで実装した内容の記事となりますので、VBAやHTMLが分からない方には「?」な内容です。予めご了承下さい。

スポンサーリンク

操作対象項目

まずはラクマで出品する際に必要な設定項目を確認していきましょう。

商品情報
 商品画像(1~4枚) ※必須
 商品名 ※必須
 説明文
 カテゴリ(親、子、孫) ※必須
 商品の状態 ※必須

配送情報
 配送料の負担 ※必須
 配送元の地域 ※必須
 発送までの日数 ※必須

販売価格
 販売価格 ※必須

実際に出品されたことのある方は分かると思いますが、ラクマの出品画面って何かに似ていますよね。

そう、メルカリにそっくりなんです。

というかプルダウンの選択肢の内容なんかはほとんどそのままです。

ということで、実はメルカリのVBA操作で実装した処理はほぼそのまま使えるため、品名等の入力方法についてはそちらをご覧下さい。

ただし「カテゴリ」と「画像登録」については若干仕様が異なりますので、この部分だけ変更する必要がありそうです。

ではまずはカテゴリの設定について見ていきましょう。

カテゴリの設定方法

まずはカテゴリ選択部分の見た目を確認します。

見た目はそんなに特別な感じはしませんね・・・

では早速クリック。

おっと、何か現れましたね。

これは「モーダルウィンドウ」と呼ばれるものです。スマホとかではお馴染みだと思います。

メルカリはプルダウンから選ぶタイプでしたが、この辺は何か意図的に変えたんでしょうか。元々巨大なショッピングモールサイトを運営している企業ですから、そちらで使っていたパーツをそのまま応用しただけかもしれませんね。

楽天で出品したことが無いので詳しくは知りません。

モーダルウィンドウとは、操作が完了するまで親ウィンドウへの操作を受け付けなくさせるタイプのウィンドウのことである。 モーダルウィンドウが表示されると、その中で指定された操作を完了するかキャンセルするかして、そのウィンドウを閉じない限り、親ウィンドウ側に対する操作ができないようになる。

IT用語辞典 Weblio辞書より引用

さて、このモーダルウィンドウはどうやって操作すれば良いんでしょうか。

そもそも操作できるのか?って見た時は疑問に思いますよね。まぁ問題無く操作できるので安心して下さい。今までと同じhtml操作で大丈夫です。

また、実はこの処理はメルカリでもやっているんです。

商品を削除する時に、「商品を削除する」ボタンを押すと確認のメッセージが出ると思いますが、あれもモーダルウィンドウです。

では早速ソースコードを確認してみましょう。

「div」タグのクラス名に「modal-dialog」というものが見えますね。

そしてその中を辿って行くと、モーダル内に表示されているものと思われる「レディース」という文字列が見えます。ちなみにこの下には「キッズ・ベビー」等の文字列も確認できますので、このdivタグ内の記述がモーダルの中身ということで間違い無さそうです。

では例えば、この「レディース」カテゴリを選択したい場合はどうすれば良いでしょうか。

答えは簡単です。このレディースという文字はアンカータグ(<a>)内のインナーテキストですから、「getElementsbyTagName」を使って「a」タグに絞り込みを行い、テキストが「レディース」と一致するものが見つかれば「Click」してやれば良いんです。

実際にVBAで記述してみましょう。

Set objAnchorAll = objIE.document.getElementsByTagName("a")
For Each objAnchor In objAnchorAll
    On Error Resume Next
    sClassName = objAnchor.className
    On Error GoTo 0
    
    'クラス名とインナーテキストで一致判定
    If sClassName = "list-group__label ng-binding" And _
       objAnchor.innerText = "レディース" Then
        objAnchor.Click
        Exit For
    End If
Next

※「objIE」には既にラクマのIEオブジェクトが格納されているなど、若干処理を省いています。

これでモーダルウィンドウ内の「レディース」カテゴリを選択することができました。実行後の画面は以下の様になります。

「レディース」カテゴリに対応した子カテゴリが表示されていれば成功です。

次に子カテゴリを選択する処理についてですが、先ほどのコードをコピーしてIF文の2つめの条件を「objAnchor.innerText = “トップス”」などに変更すればOKです。

「親カテゴリや孫カテゴリのリンクを誤って押してしまうことは無いの?」と思われるかもしれませんが、確認する限り問題無さそうでした。

以上でカテゴリの選択処理部分が完成致しました。

スポンサーリンク

画像ファイルの設定方法

続いて商品画像ファイルの設定を行います。

画像設定を行う箇所はこの様な見た目となっています。

まずは普通にクリック。

うん、いつものダイアログですね。問題無さそう。

「開く」っと・・・

・・・?

え、なにこれ・・・。

良く分かりませんが、画像加工用のアプリケーションが立ち上がるみたいです。右下に「Creative Cloud Connected」という一文があるのを見ると、Adobeが提供しているパーツなんでしょう。多分。

で、問題はこいつが操作できるのかという所なんですが・・・

見た所、ソースは確認することができる様です。また、この「取消」やら「保存」やらのボタンは「アンカータグ(aタグ)」になっていました。

あれ?もしかしていける?

と思いましたが無理でした。

「Click」では反応せず。

「setTimeout」でJavascriptから動かそうとしても反応せず。

あげく「sendKeys」でエンターキーの操作を飛ばしてみても反応してくれませんでした。まぁ「Focus」した状態で普通にキーボード押しても反応しなかったので、sendKeysでは無理だろうなとは思ってましたが・・・。

しかしそうなると打つ手無しです。

操作するためにはボタンの部分をマウスでクリックしなければいけないみたいですから・・・。

一体どうすれば・・・?

次ページで解決方法 ⇒

 

 

関連記事と広告

シェアする

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

フォローする

コメント

  1. 山口大貴 より:

    先日メルカリ?の補助ツールを申請させて頂きました、山口と申します。

    ちょうどラクマをPCから出品する際に画像を貼り付ける画面から一切動かない状態が続いております。そのため、出品がままならない状態です。

    なのでもし宜しければこちらのExcelファイルの配布を希望なのですが可能でしょうか?

    ご検討し程宜しくお願い致します。

    • 藤美れいん より:

      ご質問ありがとうございます。
      一つ確認させて頂きたいのですが、「ラクマをPCから出品する際に画像を貼り付ける画面から一切動かない状態が続いております」というのは、「こちらの記事を参考にして、ご自身で作成した処理が動かない」という意味でしょうか。

      ラクマのツールについては”まだ”配布を予定しておりませんので、残念ながら現状お渡しすることはできません。
      (特定のカテゴリにしか出品できないなど、機能的に完成していないためです)

      処理の書き方についてはアドバイスができますので、メールやコメント等でご相談頂ければ幸いです。

  2. まむ より:

    こんにちは、先日メルカリの件で質問した初心者だったものです。

    メルカリは出品時間を90min~150min(1日15件程度)でランダム出品することで利用停止にならず出品できています。やはり出品頻度が問題だったようです。
    ありがとうございました。

    さてラクマなのですが、商品名、商品説明と入力した後に価格を入力させると商品名、商品説明の欄が消えてしまいます。

    価格のfor eachを先頭に持ってきてもダメでした。
    何か原因がありますでしょうか?
    ソースコードは以下です。

    Dim obj As Object
    Dim objAll As Object

    Set objAll = objIE.document.getElementsByClassName(“form-control”)

    For Each obj In objAll
    If InStr(obj.Name, “item[name]”) > 0 Then
    obj.Focus
    obj.Value = “商品名”
    Exit For
    End If
    Next

    For Each obj In objAll
    If InStr(obj.Name, “item[detail]”) > 0 Then
    obj.Focus
    obj.Value = “商品説明”
    Exit For
    End If
    Next
    For Each obj In objAll
    If InStr(obj.Name, “item[sell_price]”) > 0 Then
    obj.Focus
    obj.Value = “300”
    Exit For
    End If
    Next

    お忙しい所恐縮ですがお時間あるときご回答をお願いします。

    • 藤美れいん より:

      入力した文字が消えてしまう理由は、入力後に動作するはずのjavascriptが動いていないからですね。
      ラクマに限らずメルカリでも同様の現象が発生するはずです。

      以下の記事に解決策が載っておりますので、参考にして下さい。
      https://rabbitfoot.xyz/vba-jquerykeyup/

  3. まむ より:

    藤見れいん様

    ご回答ありがとうございました。そちらは何とかクリアすることが出来ました。
    しかし別件で問題が発生しまして

    ラクマの画像ファイルを選択するボタンをクリックする操作を以下のコードで行っております。
    objIE.Document.getElementById(“image_tmp”).Click
    しかしこれですと、IE側のファイル操作ダイアログにアクティブが取られてしまい、ステップインでもVBAウィンドウに戻ることが出来ません。
    れいん様は他の方法で実装されたのでしょうか?

    宜しければご回答ください。お願いいたします。