本記事は、 CUI のコンソール画面から使用する中級者向けのツールのに関する内容だ。
別途、 簡単に使用できる GUI 版も作成したので、そちらについては、以下の記事も参照。
突然だが、自動車税や固定資産税などの税金や、公共料金などの払込票などを、どのように支払っているだろうか?
支払う額も大きくなりがちなので、なるべくお得に支払いたいのではないだろうか。
そこでオススメなのが nanaco ギフト だ。
クレジットカードで直接納税したり nanaco 残高にチャージする場合、手数料がかかったり、ポイントがたまらなかったりと、あまりお得にならない。
しかし nanaco ギフトであれば、額面よりも安く入手する手段が知られている。
|
また nanaco 残高と違ってセンターお預かりへのチャージなので、 チャージ残高の上限が非常に高く (50万円以上も可能らしい)、 nanaco 残高のチャージ上限である 5万円を超えるような金額の支払いでも使える大きなメリットがある。
nanaco ギフトでのお得な納税の話は、他のサイトでもっと詳しくわかりやすく書かれているだろうから、これくらいにしておく。
nanaco ギフトの登録がめんどくさい
さて、 ここからが本題だ。
そんな nanaco ギフトにもひとつ 大きな欠点がある。
それは、 1,000 円単位で提供されることが多い ということだ。
例えば 10万円分 チャージしようとすると、 100 回も nanaco ギフトID のコードを入力しなくてはならないのだ。
更に、 nanaco ギフトの登録を行う UI が、大量のギフト登録に とても優しくない。
1回 コードを入力する毎に nanaco にログインしたり、 コードを 4文字 ずつテキストボックスに入力しなくてはならなかったりと、 数をこなすのにとにかく手間がかかるのだ。
10万円 の納税で 2,000円 得するために、 2,000円分 相当以上の手間をかけるのでは愚の骨頂だ。
こうなったら、自動入力させるしかない。
VBScript で自動化する方法は既にある
愚生が思いつくようなことなど、 この広い世の中既にやっている人がいるわけでして。
VBScript で IE を操作する手段であれば、以下のページで紹介されている方法が使えるだろう。
ところが、この方法だと 「カード型 の nanaco」 では登録できるものの、 「nanacoモバイル (おサイフケータイ)」 では使うことができない。
更に、 VBScript から COM 経由で IE を制御しているので、 Windows 以外では使うことができない。
(Windows でも 今更 IE なんて… という感じもあるし。)
nanacoモバイル に対応させ、利便性を改善した PowerShell スクリプト
ということで、前述の VBSciript を参考にしつつ、 nanacoモバイル にも対応させたものを、 selenium + PowerShell で書き直してみた。
また、 前述の VBScipt は、使う準備が少々面倒だったので、その部分も少し改善させている。
Windows であれば標準で PowerShell がインストールされているほか、 PowerShell はクロスプラットフォームなので Linux などでも利用できる。
実際に Ubuntu で動作することを確認した。
macOS? 持ってないので、知らん。
使い方
-
nanacoギフト の URL が記載されているメールを、 テキストファイルに保存する。
-
ベネフィット・ステーション から nanaco ギフトを購入した場合、 以下のような内容のメールが届いているはずだ。
〇〇 〇〇 様 ≪中略≫ ≪お申込みギフトID≫ ◆1000円券100枚【有効期限:2021年03月31日】 ギフトID 管理番号 PC用URL付ギフトID ------------------------------------------------------------ XXXXXXXXXXXXXXXX [管理番号:NAN0000000000000] https://www.nanaco-net.jp/pc/emServlet?gid=XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX [管理番号:NAN0000000000000] https://www.nanaco-net.jp/pc/emServlet?gid=XXXXXXXXXXXXXXXX
- テキストファイル保存時の文字コードは、 SJIS か BOM付き UTF-8 にする。
- 以下、
mail-text.txt
という名前で保存したものとして、説明を続ける。
-
- Windows PowerShell (5.1 以下) の場合はスクリプト実行を許可する。 (PowerShell 6 以上なら不要)
- PowerShell でスクリプト を実行することが初めてなら、 管理者権限で PowerShell を立ち上げ、以下のコードを実行しよう。
Set-ExecutionPolicy RemoteSigned;
- PowerShell でスクリプト を実行することが初めてなら、 管理者権限で PowerShell を立ち上げ、以下のコードを実行しよう。
- Gist から Register-NanacoGiftAutomatic.ps1 等を含む Zip を Download ZIP リンクから ダウンロードし、適当なフォルダに展開する。
- お好みのブラウザの Selenium WebDriver をダウンロードし、 (3) で展開したフォルダに保存する。
- (3) で保存したフォルダをカレントディレクトリにして PowerShell を立ち上げ、 以下のどちらかコマンドを実行する
- nanacoカード/一体型カード の場合
&.\Register-NanacoGiftAutomatic.ps1 .\mail-text.txt -NanacoNumber 'nanaco番号' -CardNumber 'nanacoカード裏面記載の番号(7桁)' -Browser Firefox;
- nanacoモバイルの場合
&.\Register-NanacoGiftAutomatic.ps1 .\mail-text.txt -NanacoNumber 'nanaco番号' -Password 'nanacoモバイル パスワード';
- ブラウザを Chrome 以外にしたい場合は、
-Browser
オプションにお好みのブラウザ名を指定する。-Browser
オプションを省略した場合は、 Chrome が利用される。
- nanacoカード/一体型カード の場合
PowerShell コード内では、 Selenium の .NET アセンブリ (WebDriver.dll
) を読み込んでいる。
インターネットからダウンロードした Zip ファイルを解凍した場合、ファイルに ZoneId がついていて実行時にエラーとなってしまう場合があるので、 Zip ファイルの解凍前に ZoneId を解除しておくことをオススメする。
IEが2022年6月で使用できなくなるということで、今までVBSを使用してnanacoギフトの自動処理をしてきましたが、代替法が無いか調べていて、ここに辿りつきました。その結果、プログラミングは全く知りまっせんが、何とか使うことができました。ありがとうございました。
難儀したのは、PowerShellで実行するコマンド、nanacoモバイルの場合、「&.\Register-NanacoGiftAutomatic.ps1 .\mail-text.txt -NanacoNumber ‘nanaco番号’ -Password ‘nanacoモバイル パスワード’;」の、’nanaco番号’と’nanacoモバイル パスワード’の部分を自分のnanaco番号とnanacoモバイルのパスワードに代えてから実行しなくてはいけないということでした。
Windowsに標準インストールされているEdgeでの実行を試みるため、msdriver.exeをダウンロードした上で実行しましたが、ドライバが無いとエラーが出てしまい、うまくいきませんでした。Edgeでの成功例はありますでしょうか?
このスクリプトで利用しているライブラリ (WebDriver.dll) がリリースされた後、 Microsoft Edge が バージョン 18 の レガシー版 (EdgeHTML) から、 バージョン 88 の Chromium 版 にアップデートされた際に、 大幅に仕様が変更になったため、現在サポート中の Microsoft Edge のバージョンには対応していない可能性が高いです。
今からライブラリ差し替えて作り直すのも大変なので、 Chrome や Firefox で試していただいた方が手っ取り早いかと。
愛用させていただいています。ありがとうございます。
書いてあることもありますが、うまく動かなくて苦労した点を共有します。
・Chromeのバージョンとdriverのバージョンを確認
・nanaco ギフトのエンコードの確認
・ ダウンロードファイルのZoneId を解除
エラーで止まってしまう方は、以上をお試しください
この方法を行いたいのですが、素人には無理ですか。
ずっと簡単に利用できる GUI 版も作成したので、もし PowerShell版 が難しそうでしたら、 GUI 版の利用をお勧めします~
→ https://aquasoftware.net/blog/?p=1560
ピンバック: やっぱり簡単なプログラムは打てないとダメだなと思う | 投資のススメ! ライフスタイルと投資
パソコンが古いのか、時々止まります。
何度かやってできました。
感動です
ありがとうございました。
とても便利そうで試してみたいのですが…
ド素人すぎて自分で理解して試すことが
できません。
Excel公開とかして頂けませんでしょうか?
Excel とは一切関係のない仕組みなので、Excel公開とかしてもご希望には沿えなさそうです。。。
プログラムを全く知らない素人ですが、おかげさまで、大量のギフトを手間なく登録できました。
素晴らしいプログラムを公開して頂き、ありがとうございます。