1

Yahooメールを使用して以前のようにFacebookの友達をTwitterまたはGoogle+にエクスポートすることはできなくなりました-http ://lifehacker.com/5824769/how-to-migrate-all-your-facebook-data-to -google%252B Yahooは今(おそらくFacebookによって強制されています)、インポートされたすべてのFacebookの友達にタグを付けて、エクスポートできないようにします。Yahooの連絡先をFacebookの連絡先を含むCSVファイルに変換する方法を見つけたいのですが、単純な印刷ビューを変換するのが最善の方法だと思いました(https://dl.dropbox.com/u/95261/CloudShot/shot_21062012_153052を参照)。 .png)をCSVファイルに変換します。

理想的にはブックマークレットを使用し、Table2CSVのようなプラグインを使用できると思いました-http : //www.kunalbabre.com/projects/table2CSV.php

テストとして次のブックマークレットを作成しました。

javascript:;var s=document.createElement('script'); s.setAttribute('src','http://jquery.com/src/jquery-latest.js'); document.getElementsByTagName('body')[0].appendChild(s); s.setAttribute('type', 'text/javascript'); var t=document.createElement('script'); t.setAttribute('src','http://www.kunalbabre.com/projects/table2CSV.js'); document.getElementsByTagName('body')[0].appendChild(t); t.setAttribute('type', 'text/javascript'); $('qprintable').table2CSV();

Yahooの印刷連絡先のテーブルは各連絡先を別々のテーブルに配置するため、これは機能しません。ここにサンプルがあります(プライバシーを保護するために詳細を変更しました!)-http://pastebin.com/STuKmwQa

理想的には、CSVとしてダウンロードするか、コピーして貼り付けることができます。ブックマークレットを使用したいのは、これをエンドユーザーにとって簡単にしたいので、これが現在Facebookの連絡先を簡単にエクスポートできないすべての人々に役立つことを願っています。

どうすればこれを達成できますか?

4

2 に答える 2

2

http://jsfiddle.net/GMmdg/5/

一般的なセレクタ形式:

xtract('table.container-of-inner-tables table.child-tables');

jsfiddle の具体的なセレクターですが、実際のページではおそらく機能しません。

xtract('body > table > tbody > tr:not(.qprintfoot) table');

データ抽出機能、必要に応じて内部セレクターを変更:

function xtract( rootTableSelector ){
    var rows = [];
    var csv = [];
    $( rootTableSelector ).each(function(){
        var $t = $(this);
        var row = {};
        row.name  = $.trim( $t.find('tr:nth-child(1) > td > b').text());
        row.email = $.trim( $t.find('tr:nth-child(2) > td > div:nth-child(2)').text());
        rows.push( row );
        csv.push([ row.name, row.email ]);
    });
    console.log( rows );
    $('#result').text( toCSV( csv ) );
    $('#json').text( JSON.stringify( rows) );
    // prompt('this is not csv', csv );
}

csv を作成するためのテストされていない、新しく作成された関数、オプションをお楽しみください。

function toCSV( rows ){
    var newline = '\n';
    var fsep = ','; // field separator
    var quot = '"'; // field quoter
    var quotquot = [ quot + quot, '\\' + quot ][1]; // choose
    var alwaysQuote = false;
    var quoteIfContainsQuote = true;
    // omitted option possibilities:
    // - trimFields
    // - quoteStringsButNotNumbers(excel)
    // - putEqualSignBeforeNumbers(excel), etc.

    var lines = [];
    $.each( rows, function(){
      var line = [];
      $.each( this, function(){
          var s = this;
          var needsQuote = alwaysQuote;

          if( s.indexOf( fsep ) >= 0 )
              needsQuote = true;

          if( s.indexOf( quot ) >= 0 ){
              needsQuote = needsQuote || quoteIfContainsQuote;
              s = s.replace( quot, quotquot );
          }

          if( needsQuote ) s = quot + s + quot;
          line.push( s );
      });
      lines.push( line.join( fsep ));
    });
    return lines.join( newline );
}

更新された完全な js http://marijnhaverbeke.nl/uglifyjs/ ):

http://pastebin.com/vCuVBUvE

javascript:(function()%7Bfunction%20e(e)%7Bvar%20t%3D%22%5Cn%22%2Cn%3D%22%2C%22%2Cr%3D'%22'%2Ci%3D%5Br%2Br%2C%22%5C%5C%22%2Br%5D%5B1%5D%2Cs%3D!1%2Co%3D!0%2Cu%3D%5B%5D%3Breturn%20%24.each(e%2Cfunction()%7Bvar%20e%3D%5B%5D%3B%24.each(this%2Cfunction()%7Bvar%20t%3Dthis%2Cu%3Ds%3Bt.indexOf(n)%3E%3D0%26%26(u%3D!0)%2Ct.indexOf(r)%3E%3D0%26%26(u%3Du%7C%7Co%2Ct%3Dt.replace(r%2Ci))%2Cu%26%26(t%3Dr%2Bt%2Br)%2Ce.push(t)%7D)%2Cu.push(e.join(n))%7D)%2Cu.join(t)%7Dfunction%20t(t)%7Bvar%20n%3D%5B%5D%2Cr%3D%5B%5D%3B%24(t).each(function()%7Bconsole.log(this)%3Bvar%20e%3D%24(this)%2Ct%3D%7B%7D%3Bt.name%3D%24.trim(e.find(%22tr%3Anth-child(1)%20%3E%20td%20%3E%20b%22).text())%2Ct.email%3D%24.trim(e.find(%22tr%3Anth-child(2)%20%3E%20td%20%3E%20div%3Anth-child(2)%22).text())%2Cn.push(t)%2Cr.push(%5Bt.name%2Ct.email%5D)%7D)%2Cr%3De(r)%2Cconsole.log(n)%2C%24(%22body%22).prepend('%3Cpre%20id%3D%22result%22%3E%3C%2Fpre%3E')%2C%24(%22img%2C.qprintable%22).remove()%2C%24(%22%23result%22).text(r)%2C%24(%22%23json%22).text(JSON.stringify(n))%2Cprompt(%22Select%20all%20and%20copy%22%2Cr)%7Dfunction%20r()%7Bvar%20e%3Dwindow.jQuery%3Bif(!e)%7BsetTimeout(r%2C100)%3Breturn%7De(function()%7Bt(%22.qprintable2%22)%7D)%7Dvar%20n%3Ddocument.createElement(%22script%22)%3Bn.setAttribute(%22src%22%2C%22http%3A%2F%2Fcode.jquery.com%2Fjquery.min.js%22)%2Cn.setAttribute(%22type%22%2C%22text%2Fjavascript%22)%2Cdocument.getElementsByTagName(%22body%22)%5B0%5D.appendChild(n)%2Cr()%7D)()
于 2012-07-03T20:10:56.287 に答える
2

指定された HTML を使用して、CSV データ ( demo )を生成するためにこれを行います。

(function() {
    var a = $('table.qprintable2').map(function() {
        return $.trim($('b', this).text()) + '\t' +
            $.trim($('.first + div', this).text());
    });
    $('<textarea/>').val(a.get().join('\n')).appendTo('body');
})();​

data: URI をサポートするブラウザーを使用している場合はwindow.open()、CSV をファイルに直接保存するために使用できます ( demo ):

window.open('data:text/csv;charset=utf-8,' + encodeURIComponent(a.get().join('\n')), '', '');

お使いのブラウザーは、おそらくデモ フィドルのポップアップ ウィンドウをブロックすることに注意してください。ブックマークレットからトリガーされた場合、新しいウィンドウを許可する必要があります。(ウィンドウを直接開く代わりに<input type="button">、ページに を追加して、クリックするとウィンドウが開くようにすることもできます。)

更新: このバージョンでは、ページの下部に「CSV のダウンロード」リンクが追加されます。クリックすると、ブラウザーは CSV ファイルを保存または開きます (ブラウザーによって異なります)。新しいウィンドウを開くバージョンではなく、このバージョンを使用する必要があります。

于 2012-07-04T18:30:47.577 に答える