You Are Here: Home » コラム » クレジットカード特集 » nanacoギフトを効率よく登録するGreasemonkeyスクリプトを公開!

nanacoギフトを効率よく登録するGreasemonkeyスクリプトを公開!

nanacoギフトを効率よく登録するGreasemonkeyスクリプトを公開!

Club-Off(クラブオフ)などで取得したnanacoギフトを効率よく登録する方法として、筆者はGreasemonkeyのスクリプトを作成して登録している。

今回は、スクリプトを公開し、解説して行きたい。1つのスクリプトで全てできるのかも知れないが、今回は3つのスクリプトを作成した。

1.Greasemonkeyをインストール

まず、FirefoxにGreasemonkeyをインストールしよう。Greasemonkeyとは、Firefoxの拡張機能となり、ユーザのスクリプトを指定したサイトで実行することが可能となる。

例えば、ID・パスワードを登録できないサイトを指定して、オートコンプリート無効を解除する。

そうすると、IDやパスワードを保存できないようなサイトでも保存できるようにすることも可能だ。

今回は、このGreasemonkeyを使用してnanacoギフトのサイトに強引にタグを埋め込むことで自動登録することにした。

2.nanacoギフト登録画面に<input>タグを入れる

まず、1つ目のスクリプトは、nanacoギフト登録画面に16桁のnanacoギフトを入力できるテキストボックスを追加する。<table>タグを置換し、<input>タグを挿入。

この<input>タグが変化した場合、デフォルトに設置されている4つのテキストボックスに16桁のnanacoギフトを4桁ずつ分割で入力し、サブミットするJavaScriptを<head></head>間に入れ込む。

スクリプト1ダウンロード(Greasemonkeyがインストールされている状態でクリック)

// ==UserScript==
// @name??????? nanacoギフトID登録1
// @namespace?? http://www.poitan.net/
// @description nanacoギフトIDを効率よく登録するスクリプトです。
// @include???? https://nanacogift.jp/ap/p/register1.do*
// @version???? 1
// @grant?????? none
// ==/UserScript==

function setGlobalJS(js) {
var head, jsobj;
head = document.getElementsByTagName('head')[0];
if (!head) { return }
jsobj = document.createElement('script');
jsobj.type = 'text/javascript';
jsobj.innerHTML = js;
head.appendChild(jsobj);
}
setGlobalJS('function setgiftid(){str = document.getElementById("nanacogiftid").value; document.getElementById("gift01").value = str.substr(0,4); document.getElementById("gift02").value = str.substr(4,4); document.getElementById("gift03").value = str.substr(8,4); document.getElementById("gift04").value = str.substr(12,4);} function change1(){var str = document.getElementById("gift01").value; if(str.length==4){document.EjoicaActionForm.submit(); }}');

document.body.innerHTML=document.body.innerHTML.replace(/&lt;table/g,'&lt;div style="text-align:center; margin-bottom:1em; font-size=120%;"&gt;&lt;input type="text" name="nanacogiftid" id="nanacogiftid" value="" maxlength="16"? onchange="setgiftid();"&gt;&lt;/div&gt;&lt;table');

これで、nanacoギフトのページを表示すると、16桁のnanacoギフトのコードを入力するボックスが表示されるため、コードをペーストし、タブキーを押下すると自動的に確認画面に飛ぶ事になる。

3.確認画面で自動サブミット

次に、確認画面を自動的にサブミットするため、<head></head>間に、画面が表示された場合に、自動的にサブミットするスクリプトを入れ込む。

スクリプト2ダウンロード(Greasemonkeyがインストールされている状態でクリック)

// ==UserScript==
// @name??????? nanacoギフトID登録2(自動サブミット)
// @namespace?? http://www.poitan.net/
// @description nanacoギフトIDを効率よく登録するスクリプトです。
// @include???? https://nanacogift.jp/ap/p/register3.do*
// @version???? 1
// @grant?????? none
// ==/UserScript==

function setGlobalJS(js) {
var head, jsobj;
head = document.getElementsByTagName('head')[0];
if (!head) { return }
jsobj = document.createElement('script');
jsobj.type = 'text/javascript';
jsobj.innerHTML = js;
head.appendChild(jsobj);
}
setGlobalJS('window.onload = function(){document.getElementById("registerForm").submit();}');

4.登録完了メッセージ画面を閉じる

最後に、完了メッセージを確認するが、自動的に閉じるスクリプトを<head></head>間に入れ込む。ただし、エラーなどを確認するために、自動的に閉じるのは1秒遅らせることにした。1000となっている所を3000にすれば3秒遅らせることが可能だ。

スクリプト3ダウンロード(Greasemonkeyがインストールされている状態でクリック)

// ==UserScript==
// @name??????? nanacoギフトID登録3(自動クローズ)
// @namespace?? http://www.poitan.net/
// @description nanacoギフトIDを効率よく登録するスクリプトです。
// @include???? https://nanacogift.jp/ap/p/register5.do*
// @version???? 1
// @grant?????? none
// ==/UserScript==

function setGlobalJS(js) {
var head, jsobj;
head = document.getElementsByTagName('head')[0];
if (!head) { return }
jsobj = document.createElement('script');
jsobj.type = 'text/javascript';
jsobj.innerHTML = js;
head.appendChild(jsobj);
}
setGlobalJS('window.onload = function(){window.setTimeout("window.open(\'about:blank\',\'_self\').close();",1000);}');

この3つのスクリプトを登録したブラウザでnanacoギフトを登録すると、16桁のnanacoギフトをペーストし、タブを押すだけで登録が完了する。

改善点は?

このスクリプトの改善点としては、最後にウィンドウを閉じた時に、再度登録ウィンドウを開きたい。1,000円分のnanacoギフトを何十件も登録するには、登録ボタンを押すのも煩わしいためだ。

nanaco会員メニューのソースコードを確認すると、window.openで登録画面を起動しているため、子ウィンドウからwindow.openerを使えば親ウィンドウの関数をキックすることができるはずだ。しかし、何をやっても動作しない。

よく考えたところ、クロスドメインのためにwindow.openerが利かないことが判明した。nanacoの会員メニューのドメインはnanaco-net.jpとなるが、nanacoギフトの登録画面は、nanacogift.jpとなる。そのため、window.openerで子ウィンドウから親ウィンドウのnanacogift.open()をキックすることができないようだ。

もっと効率良いスクリプトがある場合は連絡して欲しい。

About The Author

菊地崇仁

1998年に法政大学工学部を卒業後、同年日本電信電話株式会社(現NTT東日本)に入社。社内システムの開発、Lモードの料金システム開発、フレッツ網の機器検証等に携わり2002年に退社。同年、友人と共に起業し、システムの設計・開発・運用を行う。2006年、ポイント交換案内サービス・ポイ探の開発に携わり、2011年3月代表取締役に就任。ポイント探検倶楽部に掲載されているポイントは約230種類。ポイントやマイルを中立の立場で語れる数少ない専門家として知られる。 三児の父であり家計のやりくりをすべて担当。ポイントのみならず、クレジットカードや保険なども守備範囲で、近年は投資にも挑戦している。 45枚のクレジットカードを保有し、約70万円の年会費を支払っている。一般カードからプラチナカード等のプレミアムカードを実際に保有・利用し、信用できる情報提供を目指している。すべてのカードを利用し、おトクな使い方、おすすめの使い方を日々研究中だ。

Number of Entries : 764

© 2013 ポイ探

Scroll to top