tripleR 開発日誌

tripleRのプログラム開発に関するあれこれ

nanacoギフト登録ツール作成の過程

今年の4月に今更ながら2%オフで入手できる方法を知った...遅い。
で、問題はギフトIDの登録。当然きっと先人がいるだろうと検索。

ところが、アシストしてくれるものは多いのに、完全自動化は2件。
それぞれIEの使用が前提というのと、seleniumのインストールが必要だったり。しかもデータ抽出が別に必要。

ブラウザ処理自動化のiMacrosは他で便利に使っているので、なんとかこれを利用して簡単に作れないか検討。

まずギフトID登録処理の実際を調査。

実際の登録作業を行なっているサイトには、nanaco番号とギフトIDを渡しているのみで、ログイン情報は渡っていない。

ギフトIDの登録ページの繰り返し利用は出来ない。(セッション管理しているらしく、新たに入力し直しても以前のギフトIDが表示されて処理済みとなる。)

その前のページ(利用規約に同意して登録の再利用は可能。

なので、この2つのページ間の遷移管理をiMacrosで行ないたいが、新たなウィンドウが開いてしまうのが問題。
(iMacrosは別ウィンドウの操作を記録できない。)
別ウィンドウを開く処理を制限して別タブにできるアドオン(Tab Position Customizer 2)があったので、この問題は解決。

後は、メールで届いたファイルからギフトIDを抽出して順次iMacroに引き渡す処理を作ればよい。

iMacrosについて調べているとjs(java script)からマクロ呼び出しが可能とか。
jsのfile apiを使えばファイルからの読み出しは簡単に出来そうなので、iMacrosでjs利用のテストをしようとしたが駄目。
なんと現在のバージョン(ブラウザの拡張機能としての無償版の)ではサポート外になってしまったことが判明。
(有償版との差別化のため?)

そのためTamper(Grease)monkeyを使いページ内にjsを埋め込むことも検討するが、これは出来ないことが分かる。
(submitでのページ遷移ではページ内の情報が破棄される。)

元々Tamper(Grease)monkeyは、iMacros無償版では使える変数の数が3つまでとの事だったので分割されたギフトIDを保持できず、16桁で渡されたギフトIDを分割するために利用予定だった。

ギフトIDを表示しておいてコピペする作業をiMacrosで記録できれば良いだけなのに...と思ったのがヒント。
iMacrosには表示結果によって処理の流れを変えることが出来るように、表示された項目を変数に読み込む機能があった(!!)。
(幸いにして、これは無償版でも有効だった。)

なので、ギフト登録で使う2つのページの前に、メールデータからギフトIDを読み込んで、ボタンクリック毎に順次表示するページを作成し、表示されたギフトIDの内容を変数に取り込めば、当初jsでやりたかったことを同じように実現できる。

更に、この表示された項目を読み込む変数(EXTRACT)も通常の変数と同様に扱えるため、実は使える変数は4つで、4桁毎に分割されたギフトIDにそのまま対応可能。これでTampermonkeyを使わずに済み、ギフト登録のページは細工することなくそのまま使える事になった。

出来てしまえば、やっていることは極めてシンプル。
iMacrosの特徴を良く利用できる題材と言える。