名刺管理サービス「Eight」から連絡先情報をエクスポートする

名刺管理サービス「Eight」

はじめに

日々増え続ける名刺の管理には、もうずいぶん前からEightを利用している。
データも正確で検索もし易く相手も利用していれば名刺情報の更新が届くなど非常に便利に使っているが、唯一あったら良いなと思っているのがデータのエクスポート機能だ。

自分が退職するときにも、関わりのあった皆に退職報告をしようと名刺情報をダウンロードしようと思ったが見つからなかった。
登録した名刺情報をエクスポートしたいという要望は有るようだが、まだ機能は実装されていないようだ。

そこで、無ければ自分で何とかするということで、自分の管理している名刺情報をエクスポートするためのJavascriptを書いた。ログインしている画面 (Google Chrome) の Console から実行する簡易コードだ。

2014/03/23追記:Eightサービスがリニューアルして現在は動かなくなっています。対応したものを名刺情報をiPhone連絡先へインポートする方法(またはEightデータをvCard形式でエクスポートするブックマークレットを作りました) – noriaki blog はてな出張所としてエントリ書きました。こちらをご覧ください。

2014/03/23追記:また、コメント欄でMauriceさんからEight / 8card エクスポート Chromeエクステンションを作ったとご連絡いただきました。

ご注意点

  • あくまでも自分の管理している名刺情報(名前、会社、電話番号、メールアドレス)が取得できるだけ
  • 使い方をよく読み、Javascriptコードの内容が理解できる方のみ実行することをオススメする
  • 動作は無保証であり何らかの問題が起こっても責任は取れない
  • Eightサービス側の仕様変更等により使えなくなることもある
  • 利用規約はざっと読んで問題無いと思われるがEightサービスから怒られたら謝る

使い方

  1. EightへGoogle Chromeを使ってログイン
  2. Ctrl + Shift + JなどでConsole画面を開く
  3. 下記のJavascriptコード1を実行する
  4. 100件ずつ名刺情報を取得するので全件取得完了したらJavascriptコード2を実行する
  5. 結果として表示された部分をコピーしてExcel等にペーストする

Javascriptコード1

var res = [];
function recursive_get_data(res, page) {
    $.ajax({
        type: "GET",
        url: request_url({ page: page }),
        dataType: "json",
        success: function(data) {
            var data_array = data.result;
            $.each(data_array, function(i,obj) {
                $.each(obj, function(month,cards) {
                    if(cards.length === 0) { return }
                    $.each(cards, function(j, card) {
                        var person = card.person;
                        var info = person.personal_cards[0].eight_card || person.personal_cards[0].friend_card;
                        var r = [person.id];
                        r.push(info.front_company_name === "" ? info.back_company_name : info.front_company_name);
                        r.push(info.front_full_name === "" ? info.back_full_name : info.front_full_name);
                        r.push(info.front_full_name_reading === "" ? info.back_full_name_reading : info.front_full_name_reading);
                        r.push(info.front_tel1 === "" ? info.back_tel1 : info.front_tel1);
                        r.push(info.front_email === "" ? info.back_email : info.front_email);
                        r.push(month);
                        res.push(r);
                    });
                });
            });
            console.log(data.context, page);
            if(page < data.context.total_pages) {
                recursive_get_data(res, page + 1);
            }
        }
    });
}
recursive_get_data(res, 1);

function request_url(option) {
    return "https://8card.net/people/display_personal_cards.json?0.13670155755244195&_method=get&sort=5&transcribing=0&per_page=100&web=1&use_paginate=1&tags=&index=&keyword=&page=" + option.page;
}

Javascriptコード2

console.log($.map(res, function(array, i) { return array.join("\t"); }).join("\n"));

最後に

Eightさん、いつもありがたく使わせてもらってます。有料機能でも良いのでエクスポート機能を早く提供してください。

スポンサード