今回はショッピーズ(SHOPPIES)と呼ばれる、女性向け専門のファッション系フリマサイトを操作し、出品を自動化できる様なVBAプログラムを組んでみたいと思います。
【対象サイト】
ショッピーズ(SHOPPIES)「https://shoppies.jp/」
ただ今回一つ問題があって・・・
実はこのショッピーズに関してはプログラムの試作もまだ行っていないんです。
今まで紹介したメルカリ、ラクマ、フリル等のプログラムに関しては、事前に出品までできる事を確認した上で紹介していたのですが、今回は最終的に全て自動化できるかどうかは分かりません!
という事で未完成のまま途中で終了する可能性もありますが・・・サイトの構成を見た感じ多分恐らくきっと大丈夫でしょう。
例え一部分だけしか自動化できなかったとしても、人によっては手動でやるより時間短縮になると思いますからね。
ということで早速一から処理を組んでいこうと思います!
出品ページを開く
「一から」と書きましたが、過去に作った「現在開いているページを取得する処理」や「ページの読み込みが完了するまで待機する処理」なんかは以前作ったものをある程度そのまま使います。
それぞれの処理は以下の通り。
'========================================================== 'ドキュメントタイトル or URLを指定して起動中のIEを取得 '========================================================== Public Function getRunningIE(title As String, Optional url As String) As InternetExplorer Dim ie As InternetExplorer 'IE格納 Dim sh As Object 'shellオブジェクト格納 Dim winObj As Object 'ウィンドウを格納 Dim winObjName As String 'ウィンドウタイトルを格納 Dim documentTitle As String 'ドキュメントタイトルを格納 Set sh = CreateObject("Shell.Application") For Each winObj In sh.Windows On Error Resume Next winObjName = "" documentTitle = "" winObjName = winObj.FullName documentTitle = winObj.document.title On Error GoTo 0 'IEウィンドウの判定 If LCase(Right(winObjName, 12)) = "iexplore.exe" Then 'URLが指定されていた場合はURLで確認 If url <> "" Then If InStr(winObj.LocationURL, url) > 0 Then Set ie = winObj Exit For End If Else '指定したタイトルのIEかどうかを判定 If InStr(documentTitle, title) > 0 Then Set ie = winObj Exit For End If End If End If Next Set getRunningIE = ie End Function
'========================================================== 'IE画面待機処理 '========================================================== Public Function waitBrowseLoading(ie As InternetExplorer) As InternetExplorer Dim bIeBusyFlag As Boolean Dim iIeReadyStateNumber As Integer Do bIeBusyFlag = False iIeReadyStateNumber = -1 On Error Resume Next bIeBusyFlag = ie.Busy iIeReadyStateNumber = ie.readyState On Error GoTo 0 Sleep 100 DoEvents Loop While bIeBusyFlag Or iIeReadyStateNumber <> READYSTATE_COMPLETE End Function
それぞれの処理の解説については以下の記事を参照下さい。
■VBAでブラウザを操作して作業を自動化してみよう -ウェブスクレイピングツール編①-
■商品ページからボタン一つで情報を取り込むVBAプログラムの作り方(Amazon編①)
起動中のIEを取得する処理に関しては、上記「Amazon編」で作った物にURL指定機能を追加しています。
ではまずはデータの入力先となる「出品ページ」を開く部分の処理を用意しますが、方法は二通りあります。
- IEを起動してショッピーズの出品ページを開く
- IEで起動中のショッピーズのページを取得して、出品ページを開く
どちらでも好きな方で構いませんが、「1」の場合はセッション情報が切れていた場合にログイン画面が表示されてしまい、ログイン画面の検知 or パスワードの自動入力処理を行うために余分に処理を追加しないといけなくなります。
ですので今回は「2」の方法で実装します。
前回Amazonの商品ページを取得する際は、『タイトルに”Amazon.co.jp”という単語が含まれるページ』といった条件で指定を行いましたが、ショッピーズに関しては以下の画像の様にタイトルにほとんど情報が含まれていません。
これだとタイトルで検索することができませんので、URLで検索します。
今回はドメインに「https://shoppies.jp/」が含まれるページを取得するという形で処理を記述します。
メインの処理はこんな感じですね。
'ショッピーズのドメイン Const DOMAIN_SHOPPIES = "shoppies.jp/" 'ショッピーズの出品ページURL Const URL_SHOPPIES_EXHIBIT = "https://shoppies.jp/write-item_sp" '----------------------------------------------------------------- 'ショッピーズの出品ページにデータを自動入力させる処理 '----------------------------------------------------------------- Sub main() Dim objIE As InternetExplorer Set objIE = getRunningIE("", DOMAIN_SHOPPIES) objIE.Navigate2 URL_SHOPPIES_EXHIBIT End Sub
上記mainの処理を実行することで、ショッピーズ内のどのページを開いていても出品ページに遷移させられるはずです。
次からは実際に出品ページへ入力を行っていきます。
短いですが今回はこの辺で!