大量登録が大変なので、nanacoギフト登録をVBScriptで自動化してみた
どうも。dettです。
先日、nanacoギフトを大量購入しました。
1000円分×100個。
購入したギフトはメールでギフト登録用のコード+管理番号+登録用URL(PC)+登録用URL(モバイル)が届きます。
URLを上から順番にクリックしていけば登録できるかな?と思いきや、実は違う。
いちいち「nanaco番号」と「カード記載の番号」の入力が必要。
登録がめっちゃ大変です。面倒くさいです。手間です。時間がかかります。
というわけで、たまにはエンジニアらしいことをしようと登録をVBScriptで自動化してみました。
自動化の結果
(エラーがなければ)完全自動で登録してくれます。
めっちゃ楽になりました。時間も短縮。
自動化のフロー
1.登録用URL(PC)をIEで開く
2.「nanaco番号」と「カード記載の番号」を自動入力し、ログインボタンをクリック
3.以下の画面で会員メニューの「nanacoギフト登録」をクリック
4.以下の画面で「ご利用約款に同意の上、登録」をクリック
5.ギフトID登録フォームで「確認画面へ」ボタンをクリック。(ギフトIDは登録用URLをクリックしていれば自動入力)
6.最後に登録を押して、IEの画面を閉じる
自動化コード
'Dim anchor As HTMLAnchorElement Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim inputFile Set inputFile = fso.OpenTextFile("C:\Users\Desktop\nanacoTest\inputText.txt", 1, False, 0) Do Until inputFile.AtEndOfStream Dim registerUrl registerUrl = inputFile.ReadLine Call use_ie(registerUrl) Loop Sub use_ie(registerUrl) ' 1.登録用URL(PC)をIEで開く ' IE起動 Set ie = CreateObject("InternetExplorer.Application") ie.Navigate registerUrl ie.Visible = True waitIE ie ' 2.「nanaco番号」と「カード記載の番号」を自動入力し、ログインボタンをクリック ' nanaco番号を入力 ie.Document.getElementById("nanacoNumber02").Value = "0000000000000000" WScript.Sleep 100 ' カード記載の番号を入力 ie.Document.getElementById("cardNumber").Value = "0000000" WScript.Sleep 100 ' ログインボタンクリック ie.Document.all("loginPass02").Click waitIE ie WScript.Sleep 100 ' 3.会員メニューの「nanacoギフト登録」をクリック For Each anchor In ie.document.getElementsByTagName("A") If InStr(anchor.innerText, "nanacoギフト登録") > 0 Then anchor.Click Exit For End If Next WScript.Sleep 1000 ' 4.「ご利用約款に同意の上、登録」をクリック For Each anchorss In ie.document.getElementsByTagName("input") If InStr(anchorss.outerHtml, "/member/image/gift100/btn_400.gif") > 0 Then anchorss.Click Exit For End If Next WScript.Sleep 1000 ' 5.ギフトID登録フォームで「確認画面へ」ボタンをクリック。(ギフトIDは登録用URLをクリックしていれば自動入力) Set objShell = CreateObject("Shell.Application") Set objIE2 = objShell.Windows(objShell.Windows.Count - 1) '新しいウィンドウのオブジェクトを取得 objIE2.Visible = True 'True:IEを表示 , False:IEを非表示 WScript.Sleep 100 For Each anchorss In objIE2.document.getElementsByTagName("input") If InStr(anchorss.outerHtml, "submit-button") > 0 Then anchorss.Click Exit For End If Next WScript.Sleep 1000 ' 6.最後に登録を押して、IEの画面を閉じる ' ギフトID登録内容確認画面で「登録する」ボタンを押す For Each anchorss In objIE2.document.getElementsByTagName("input") If InStr(anchorss.outerHtml, "登録する") > 0 Then anchorss.Click Exit For End If Next WScript.Sleep 1000 ' 制御を破棄 ie.Quit Set ie = Nothing objIE2.Quit Set objIE2 = Nothing End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 100 Loop WScript.Sleep 1000 End Sub
注意点
このスクリプトは我が家の環境では動作しましたが、その他の環境での動作は一切不明です。
動作の保証がされているものではないため、利用の際には自己責任でお願いします。
特に、エラー処理が何もないので、利用の際はご注意ください。
動作確認環境 : windows10、IE
利用の際には以下の対応が必要です。
①inputText.txtを作成し、「C:\Users\Desktop\nanacoTest」に保存する
ファイル名、パスは自由に変更可能。コードを書き換えてください。
txtファイルには、「登録用URL(PC)」を1行に1URLずつ記載してください。
書かれている分だけ登録されます。
②「nanaco番号」と「カード記載の番号」の変更
「nanaco番号」と「カード記載の番号」は自分の値を記入してください。
最後に実行の際には、テキストファイルに適切に編集した上記コードを張り付け、拡張子を.vbsにして保存し、ダブルクリックで実行です。
2019/1/14追記
vbsファイルは文字コード「SJIS」で保存しての動作確認を行っています。
UTF等ではうまく動作しないと思われます。
途中で動作を止めたい時には開いているIEのウインドウを右上の「×」で閉じる等するしか方法がありませんので、ご注意ください。