みなさん大好きnanacoギフト。
私も税金の支払いなどに利用するため「ベネフィットステーション(J’sコンシェル)」や「福利厚生倶楽部」でnanacoギフトを購入することがあります。
このnanacoギフトの唯一にして最大の欠点が「自分のアカウントに登録する作業」です。
正攻法では1コードずつ登録しなきゃいけません…
しかし、この地獄の単純作業から開放される自動登録マクロが2018年にあるサイト様で公開されました。
ありがた〜く私も利用させて頂いています。
本ページではその自動登録マクロをちょっとだけ改造させて頂いて、普段私が利用している登録結果の出力をするマクロを紹介させて頂きます。
開発者様のサイト
マクロの開発者様はサイトはこちら。
いくつかファイルを作成したりパスを変更する必要はありますが、ほぼコピペだけでそのまま使えます。
vbsなのでコード内で何をやっているのかわかるので、パスワード等が流出する危険性がないのもありがたいですね。
これを利用することで、煩わしいnanacoギフト登録作業から解放されます。革命的です。
結果ファイルを作成するように改造
そのままでも十分便利なのですが、結果ファイルを出力するように変更してみました。
100個も200個もnanacoギフトを登録していると、私のポンコツWindeosPCだとたまにエラーが出て、登録されていないnanacoギフトコードが発生してしまいます。
登録するコードが多くなると、どのURLでエラーが発生したのかがわからず、しょうがないからもう1度すべて自動登録させるという悪循環…。
そこで、登録が完了したnanacoギフトのURLだけを、結果ファイルを別途作成して出力することにしてみました。
ソースコードはこちら。
※nanacoモバイル版です、nanacoカードをご使用の方は元サイト様をご参考にお願いします
※出力ファイルを作成するようにしています
※オブジェクトの破棄処理を追加しています
※私は低スペックPCで処理しているのでSleep時間(処理の待機時間)を長めに設定しています
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim inputFile
Set inputFile = fso.OpenTextFile("C:¥Users¥Desktop¥nanacoTest¥inputText.txt", 1, False, 0)
Dim retFile
Set retFile = fso.OpenTextFile("C:¥Users¥Desktop¥nanacoTest¥retText.txt", 8, True, 0)
Do Until inputFile.AtEndOfStream
Dim registerUrl
registerUrl = inputFile.ReadLine
Call use_ie(registerUrl)
Loop
inputFile.Close
retFile.Close
Set inputFile = Nothing
Set retFile = Nothing
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("nanacoNumber01").Value = "0000000000000000"
WScript.Sleep 300
' カード記載の番号を入力
ie.Document.getElementById("pass").Value = "0000000"
WScript.Sleep 300
' ログインボタンクリック
ie.Document.all("loginPass01").Click
waitIE ie
WScript.Sleep 300
' 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 3000
' 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 3000
' 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 8000
' 6.最後に登録を押して、IEの画面を閉じる
' ギフトID登録内容確認画面で「登録する」ボタンを押す
For Each anchorss In objIE2.document.getElementsByTagName("input")
If InStr(anchorss.outerHtml, "登録する") > 0 Then
anchorss.Click
' 結果ファイルに書き込み
retFile.WriteLine registerUrl
Exit For
End If
Next
WScript.Sleep 8000
' 制御を破棄
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 5000
End Sub
もちろん大部分は開発者様のマクロのままです。
結果出力ファイルを作成することで追加したのは2箇所です。
初めのところにretFileなるものを定義しています。
これが結果ファイルになりますので、任意のパスに変更してください。
次にretFileに書き込む箇所はIEの終了処理後の赤枠部分。
あとは念のためオブジェクトを破棄するコードを追加。なくても全然いいんですけどね。
結果ファイルの使い方
作成された結果ファイル「retText.txt」がこちら。
これには登録が完了したnanacoギフトURLが溜まっています。
これを登録元ファイル「inputText.txt」と比べて、登録漏れがないかを確認します。
行数を見れば一目瞭然だと思うので、行数が一致していることを確認しましょう。
行数が違っていたらエラーが発生した可能性があります。
どのURLでエラーが発生したかは単純にテキストエディタ等で開いて見比べてもいいですし、Excelに貼り付けて比較してもいいですし、お好みで。
Excelを使う場合はこんな感じ。
適当に等式列を作成(=A1=G1等)して、FALSEになっている箇所が登録されたか怪しいURLです。
複数行エラーURLがある場合には、1行ずらして再度等式を貼り直して…FALSEを見つける、という作業を繰り返します。
そうして抽出した怪しいURLだけを「inputText.txt」に残して、再度マクロを実行しましょう。
これで登録漏れがなくなります。
最終チェックとして、後日nanacoギフトが想定の金額通りセンター預かりになっていることを確認しましょう。
ちょっとでもお得にしようとnanacoギフトを買っているのに、ギフトコードの登録ミスがあれば本末転倒ですからね。金額チェックは重要です。
センター預かりのnanacoマネーが多すぎると…
nanacoギフトをマクロで大量に登録できるようになるのは有難いのですが、センター預かりマネーが増えすぎるとある弊害が生じます。
それは「nanacoポイントが消費できない問題」です。
詳しくは別記事でまとめていますので、興味がある方は合わせてご確認頂ければと思います。
おわりに
このマクロを利用してから、手作業でやっていたnanacoギフト登録作業から解放されて万々歳です。
1%〜2%のお得のために数十分も単純作業するのは苦行でしかありませんからね…。
ちなみに登録元ファイルである「inputText.txt」に書き込むようなURL形式にするには、私はテキストエディタによくある「キーマクロ」という機能を利用しています。
「キーマクロ」は汎用性が高く、覚えておくと仕事効率がググッと上がるため覚えて損はないです。
後日キーマクロの使い方を投稿する予定(覚えていたら…)です。
※2020/3/19 キーマクロについて記事を作成しました。
本ページが誰かのお役に立てば幸いです。
関連記事:
コメント
とても便利な方法だということは分かりましたので、使いたいと思ってます。 しかし全く、マクロ(VBA)のやり方が分かりません。 エクセルを普段から使ってますが、マクロはいじったことないです。 マイクロソフトのエクセルではなく、OpenOficeを使ってます。 ナナコのなソースコードがありますが、どのような手順で、使えるように、操作するのか理解ができてません。 それが、出来ればあとは、ボタンを押して繰り返し実行してくれるものと思ってます。 最初にソースコードをどうするのか、ヒントを教えて頂けたら、助かります。 ちなみにオープンオフィスにはツールの中に、マクロの記録、実行、管理、署名と、ダイアログの管理とあります。 マクロの記録あたりが、関係していそうですが・・・。 お忙しいところ、教えて頂けるとありがたいです。 マクロの記録から実行しようとしてら、JREをインストールしてください。と、表示されました。
読んでいただけて嬉しいです、ありがとうございます。
ざっくり説明になり恐縮ですが…
このマクロはVBAではなくVBS(vbスクリプト)となるので、Excelやオープンオフィスは利用しません。
windowsPC上でソースをテキストエディタ等で名前つけて保存(例えば「macro.vbs」)するだけで動作します。
拡張子は.vbsになるのでご注意ください。
これとnanacoギフトコードを記載する「inputText.txt」を用意してあげるだけでOKです。
参考になれば幸いです。
こんばんは。
「nanaco ギフトコード 自動」検索から辿り着きました。大変興味深く読ませて頂いております。
dett様のVBSを使用させて頂いた所、
行:98
文字:5
エラー:エラーを特定できません
コード:80004005
ソース:(null)
と出てしまい先に進めません。当方Win10homeで至って普通の環境です。
ieオプションの
セキュリティタブ、保護モード:解除、セキュリティーレベル:中
ポップアップブロック:「www.nanaco-net.jp」を許可
に変更しましたが駄目でした。
dett様の記事が2年前という事もあり、マネー偏差値様の記事が先月で新しいという事もあるため、こちらに書き込ませて頂きました。
何かセキュリティー関連で設定がおかしいのでしょうか?
ご教授頂けましたら幸いです。
読んで頂いてありがとうございます。
先ほどマクロを動かしてみたところ、問題なく動作しましたのでnanaco側の仕様変更はなさそうです。
ちなみにIEの信頼済みサイトにnanacoのサイトを登録しているとそのようなエラーになるとどこかで見た気もしますが、いかがでしょうか?
もし登録している場合には削除してからお試しください。
登録していない場合には、moneyhensachi☆gmail.com(☆を@に変換願います)にvbsファイルを添付して送ってくだされば、ソースが悪いのか環境が悪いのかの判断程度にはなりますが、切り分けが行えます。
ピンポイントな回答が出来ずに申し訳ありませんがどうぞよろしくお願い致します。
こんばんは!
すいません、会員メニューには行くのですが
nanacoギフトに登録のボタンが押されなくて
これってどうしたら良いのでしょうか・・・
ポップアップ許可も全部許可にしております。
読んで頂いてありがとうございます。
どのような状況かわからないので、moneyhensachi☆gmail.com(☆を@に変換願います)にvbsのソースコードを送ってくだされば、ソースが悪いのか環境が悪いのかの判断程度にはなりますが、切り分けが行えます。
ピンポイントな回答が出来ずに申し訳ありませんがどうぞよろしくお願い致します。
こんにちは。
nanacoギフトを自動で登録出来ないか調べていましたらこちらに辿り着きました。
vbsは全くわかりませんでしたが無事に登録出来ました。(メモ帳の使い道を初めて知りました)
ありがとうございます。
最初、こちらがnanacoモバイル用だという事を見逃していてログインすら出来ず困りました。
途中で気付きnanacoカード用に修正したらうまく動いてくれたのでよかったです。
うちのPCでは登録した100件中15件ほどエラーが出ていたので結果ファイルが作成されていて
大変助かりました。
できれば登録完了画面をPDFで出力するか、結果ファイルにURLと共に受付番号が書き込まれれば
いいなと思ってますが、自分で作れる気が全くしません(笑)
これを機にvbsの勉強をしてみようと思います。
ありがとうございました。
読んで頂いてありがとうございます。
少しでもお役に立てたようで良かったです。
PDF出力と受付番号出力はどちらもvbsで実装可能です。
特に受付番号出力は既存コードの応用で実現できるので、是非お試しください。
こんばんわ、ナナコギフト自動登録で検索してたどり着きました。こちらの開発者様の所でも質問させて頂いたのですが、回答頂けそうか分からなかったのと、ご親切に色々と回答されてるようなので質問させて下さい。
ナナコギフトを福利厚生倶楽部で購入すると、一つのURLが送られてきて、福利厚生倶楽部のIDでログインすると、ギフト番号が表に並んでいる状態で、こちらの方法が使えません。どこをどのように書き直したら良いか、またinput.textにはギフトコードだけを改行して並べておくなどでも大丈夫か教えて頂けないでしょうか。。。
またできればchromeで使いたいのですが、その場合も書き直し方が分からずで💦
色々と質問多いですが教えて頂けると非常に助かります。どうぞ宜しくお願い致します。
読んで頂いてありがとうございます。
・input.txtの形式について
https://www.nanaco-net.jp/pc/emServlet?gid=aaaaaaaaaaa
この形式に直す必要があります。なので福利厚生倶楽部のコード1を「aaaaaaaaaaa」の箇所にひたすら置き換える必要があります。
【福利厚生倶楽部の表を選択してコピー→Excelに貼り付け→1行目がずれるので手で修正→前の列に「https://www.nanaco-net.jp/pc/emServlet?gid=」を貼り付け→テキストエディタに2列分貼り付け→列の間(Tab)を削除】
で比較的簡単にいくかなと思います。
・chromeでの使用について
出来ないこともないとは思いますが、コードを大幅に書き直す必要があるのでIEを使った方が早いです。
お役に立てば幸いです。
タロウ様
すぐのご回答ありがとうございます!!
やってみてまた分からなければ質問させてください。
IEでやってみますね。
タロウ様
で、で、できましたー!!!
どうもありがとうございました。
これで大量購入しても登録の手間が省けます。
ちなみにギフトコードを含めたURLを作るのに、
テキストをくっつける関数あったなと思い出し、
「テキストエディタに2列分貼り付け→列の間(Tab)を削除」の
代わりに「=CONCAT(B3,C3)」でURLとギフトコード1をくっつけました。
ご参考までに。
どうもありがとうございました。
無事うまくいったようで何よりです。
1つ1つ手作業は本当に苦痛ですからね…
またどうぞよろしくお願いします。
タロウ様
大量に登録して確認したら3000円分だけ登録されていない事が分かり焦ったのですが
タロウさんの結果出力版でやり直した所、始めはじーっとエラーになるかならないか
画面見てたのですが、登録できた3件=前回登録できなかった3件のみがretTextに記載され、
無事登録・確認する事ができました!
エラーになる事も分かったので、今後はこの結果出力版で使わせて頂こうと思います。
改めてありがとうございました(^^)