Ubiquity(Firefox拡張機能)で郵便番号検索・住所検索をする

Firefox拡張機能の Ubiquity で"郵便番号から住所"、または"住所から郵便番号"を検索するスクリプトを書いた。
API はグループテクノロジー株式会社の "郵便番号検索API"を利用した。
コールバック関数の部分がよく分からなかったので置換してJSONの形に直した・・・(-_-;)。

使い方

郵便番号から住所を検索
zip [郵便番号]
例:
zip 1000001
zip 100-0001
Ubiquity Zip-Code Search ScreenShot1
住所から郵便番号を検索
zip [住所]
例:
zip 千代田区千代田
zip 東京都千代田区千代田
Ubiquity Zip-Code Search ScreenShot2

インストール・アンインストール

インストール

アンインストールは Ubiquity の Preferences ページ(about:ubiquity)の Subscribed Feeds から該当フィードの [unsubscribe] をクリックする。

スクリプトコード

CmdUtils.CreateCommand({
    name: "zip",
    takes: {"Searching" : noun_arb_text },
    url: "",
    icon: "http://groovetechnology.co.jp/favicon.ico",
    description: "Searches Zip-Code.",
    homepage: "https://www.serendip.ws/",
    author: { name: "iNo", homepage: "https://www.serendip.ws/" },
    license: "MPL",
    preview: function(pBlock, directObject) {
        var query = directObject.text;
        pBlock.innerHTML = "Searching for...";
        if (query.match(/^\d+\-?\d+$/)) {
            var type = 'zipcode=';
        } else {
            var type = 'word=';
        }
        var url = "http://groovetechnology.co.jp/ZipSearchService/v1/zipsearch?" + type + query + "&callback=callback";
        jQuery.get(url, null, function(response) {
            var json = Utils.decodeJson(response.replace(/(^callback\( | \)\;$)/g, ""));
            var pTemplate = "<div style=\"max-height:500px;overflow:auto;\">{for result in zipcode}<div><tt>${result.zipcode}\t${result.prefecture}${result.city}${result.town}</tt></div>{/for}</div>" +
                            "<div style=\"text-align:right;font-style:italic;\">Author iNo (<a href=\"https://www.serendip.ws/\" style=\"color:skyblue;text-decoration:underline;\">Serendip</a>)</div>" +
                            "<div style=\"text-align:right;font-style:italic;\">Powered by <a href=\"http://groovetechnology.co.jp/webservice/\" style=\"color:pink;text-decoration:underline;\">\u30B0\u30EB\u30FC\u30D6\u30C6\u30AF\u30CE\u30ED\u30B8\u30FC\x20Web\x20\u30B5\u30FC\u30D3\u30B9</a></div>";
            pBlock.innerHTML = CmdUtils.renderTemplate(pTemplate, json);
        });
    }
});
«
»