コスパ重視で生きたい人生だった

なるべく楽して生きて行きたい30代サラリーマンのブログ

大量登録が大変なので、nanacoギフト登録をVBScriptで自動化してみた

f:id:dett0826:20180220225808j:plain

どうも。dettです。
先日、nanacoギフトを大量購入しました。
1000円分×100個。
購入したギフトはメールでギフト登録用のコード+管理番号+登録用URL(PC)+登録用URL(モバイル)が届きます。

URLを上から順番にクリックしていけば登録できるかな?と思いきや、実は違う。
いちいち「nanaco番号」と「カード記載の番号」の入力が必要。

登録がめっちゃ大変です。面倒くさいです。手間です。時間がかかります。

というわけで、たまにはエンジニアらしいことをしようと登録をVBScriptで自動化してみました。

自動化の結果

(エラーがなければ)完全自動で登録してくれます。
めっちゃ楽になりました。時間も短縮。

自動化のフロー

1.登録用URL(PC)をIEで開く

2.「nanaco番号」と「カード記載の番号」を自動入力し、ログインボタンをクリック

3.以下の画面で会員メニューの「nanacoギフト登録」をクリック
f:id:dett0826:20180220230500j:plain

4.以下の画面で「ご利用約款に同意の上、登録」をクリック
f:id:dett0826:20180220230747j:plain

5.ギフトID登録フォームで「確認画面へ」ボタンをクリック。(ギフトIDは登録用URLをクリックしていれば自動入力)
f:id:dett0826:20180220231132j:plain

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のウインドウを右上の「×」で閉じる等するしか方法がありませんので、ご注意ください。