大量の nanaco ギフトを自動登録して、オトクに税金を支払う

Pocket

本記事は、 CUI のコンソール画面から使用する中級者向けのツールのに関する内容だ。
別途、 簡単に使用できる GUI 版も作成したので、そちらについては、以下の記事も参照。


突然だが、自動車税や固定資産税などの税金や、公共料金などの払込票などを、どのように支払っているだろうか?
支払う額も大きくなりがちなので、なるべくお得に支払いたいのではないだろうか。

そこでオススメなのが nanaco ギフト だ。

クレジットカードで直接納税したり nanaco 残高にチャージする場合、手数料がかかったり、ポイントがたまらなかったりと、あまりお得にならない。
しかし nanaco ギフトであれば、額面よりも安く入手する手段が知られている。

  • ベネフィット・ステーション
    • 福利厚生型の会員制割引サービス。
    • 2020年4月現在、 毎月 10万 円分まで 額面の 2% OFF で nanaco ギフトを購入できる。
    • 所属組織による団体加入か、 「ベネフィット・ステーション プライベート」 や 「デイリーPlus」などといった個人向けの有料サービス、 「(JACCS カードの) J’s コンシェル」などの付帯サービスで利用できる。
  • Kiigo (廃止)
    • 以前はクレジットポイントを貯めながら nanaco ギフトを購入できたのだが、 2019年 に nanaco ギフトの取り扱いがなくなってしまった。
  • ちょコムショップ
    • NTT系列の決済会社が運営する、電子マネー購入サイト。
    • 0.5% OFF 程度で、一部ブランドのクレジットカードを使って購入できる。 クレジットカードのポイントと併せればそこそこお得に購入できる。

また 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? 持ってないので、知らん。

使い方

  1. 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 という名前で保存したものとして、説明を続ける。
  2. Windows PowerShell (5.1 以下) の場合はスクリプト実行を許可する。 (PowerShell 6 以上なら不要)
    • PowerShell でスクリプト を実行することが初めてなら、 管理者権限で PowerShell を立ち上げ、以下のコードを実行しよう。
      Set-ExecutionPolicy RemoteSigned;
  3. Gist から Register-NanacoGiftAutomatic.ps1 等を含む Zip を Download ZIP リンクから ダウンロードし、適当なフォルダに展開する。
  4. お好みのブラウザの Selenium WebDriver をダウンロードし、 (3) で展開したフォルダに保存する。
    • Google Chrome の場合は、 こちらchromedriver をダウンロード。
    • Mozzila Firefox の場合は、 こちらgeckodriver をダウンロード。
    • 他にも、 Edge や Opera, IE 用の WebDriver がある。
      なお、オススメは Chrome だ。 Firefox でも動作することは確認したが、なんか動作が遅かった。
  5. (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 が利用される。

PowerShell コード内では、 Selenium の .NET アセンブリ (WebDriver.dll) を読み込んでいる。
インターネットからダウンロードした Zip ファイルを解凍した場合、ファイルに ZoneId がついていて実行時にエラーとなってしまう場合があるので、 Zip ファイルの解凍前に ZoneId を解除しておくことをオススメする。

大量の nanaco ギフトを自動登録して、オトクに税金を支払う」への10件のフィードバック

  1. 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 で試していただいた方が手っ取り早いかと。

  2. 愛用させていただいています。ありがとうございます。
    書いてあることもありますが、うまく動かなくて苦労した点を共有します。
    ・Chromeのバージョンとdriverのバージョンを確認
    ・nanaco ギフトのエンコードの確認
    ・ ダウンロードファイルのZoneId を解除
    エラーで止まってしまう方は、以上をお試しください

  3. ピンバック: やっぱり簡単なプログラムは打てないとダメだなと思う | 投資のススメ! ライフスタイルと投資

  4. パソコンが古いのか、時々止まります。
    何度かやってできました。
    感動です
    ありがとうございました。

  5. とても便利そうで試してみたいのですが…
    ド素人すぎて自分で理解して試すことが
    できません。
    Excel公開とかして頂けませんでしょうか?

    • Excel とは一切関係のない仕組みなので、Excel公開とかしてもご希望には沿えなさそうです。。。

  6. プログラムを全く知らない素人ですが、おかげさまで、大量のギフトを手間なく登録できました。
    素晴らしいプログラムを公開して頂き、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください