Table to CSV

    @@ -31,7 +31,6 @@ target.forEach(table => { table.addEventListener('click', dl) - alert('テーブルをクリックしてください') }); const removeEvent = ()=>{ @@ -39,5 +38,6 @@ table.removeEventListener('click', dl); }) } + alert('テーブルをクリックしてください') }
  • /*
     * @title Table to CSV
     * @description テーブルクリックでCSVとしてダウンロード
     * @include http://*
     * @license public domain
     * @javascript_url
     */
    
    
    {
        const target = document.querySelectorAll('table');
        
        const dl = event => {
            const bom = new Uint8Array([0xef, 0xbb, 0xbf]);
            console.log(event.currentTarget)
            const a = document.createElement('a');
            a.download = 'test.csv';
            a.href = URL.createObjectURL(
                new Blob([
                    bom,
                    Array.from(event.currentTarget.querySelectorAll(`tr`)).map(
                        r => [...r.children].map(c => `"${c.innerText}"`).join(',')
                    ).join('\n')
                ],
                    { type: "text/csv" }
                )
            )
            a.click();
            removeEvent();
        }
    
        target.forEach(table => {
            table.addEventListener('click', dl)
        });
        
        const removeEvent = ()=>{
            target.forEach(table=>{
                table.removeEventListener('click', dl);
            })
        }
        alert('テーブルをクリックしてください')
    
    }
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2022/01/04 13:20:31 - 01/04
  2. 2022/01/04 13:19:31 - 01/04