Place Browser Table Export

Exports WME Place Browser's table output to CSV and download to local disk

目前為 2019-10-04 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Place Browser Table Export
// @namespace    http://junyianl.net/
// @version      2019.10.04.03
// @description  Exports WME Place Browser's table output to CSV and download to local disk
// @author       junyianl
// @match        https://w-tools.org/*
// @grant        none
// ==/UserScript==

/*
Changelogs:
2019.10.04.03
- Bugfix

2019.10.04.02
- Changed PL column to actual permalink
- Using tab separator instead of comma, for easier copy-and-pasting into Google spreadsheet
*/

(function() {
    'use strict';

    // Your code here...

    function downloadCSV(csv, filename) {
        var csvFile;
        var downloadLink;

        // CSV file
        csvFile = new Blob([csv], {type: "text/csv"});

        // Download link
        downloadLink = document.createElement("a");

        // File name
        downloadLink.download = filename;

        // Create a link to the file
        downloadLink.href = window.URL.createObjectURL(csvFile);

        // Hide download link
//         downloadLink.style.display = "none";

        // Add the link to DOM
        document.body.appendChild(downloadLink);

        // Click download link
        downloadLink.click();
    }

    function exportTableToCSV(filename) {
        var csv = [];
        var table = document.querySelectorAll("table.tablesorter");

        // Populate column headers
        var row = [], cols = table[0].querySelectorAll("th");
        for (var i = 0; i < cols.length; i++) {
            row.push('"' + cols[i].innerText + '"');
        }
        csv.push(row.join(","));

        // Populate places
        var places = table[0].querySelectorAll("[class*=validate]");
        for (var j = 0; j < places.length; j++) {
            var placerow = [], placecol = places[j].querySelectorAll("td");
            for (var k = 0; k < placecol.length; k++) {
                if (k === 0) {
                    var pl = placecol[k].querySelector("a");
                    placerow.push('"' + pl.href + '"' );
                }
                else if (k === 2) {
                    var issue = [], issues = placecol[k].querySelectorAll("li");
                    for (var l = 0; l < issues.length; l++) {
                        issue.push(issues[l].innerText);
                    }
                    placerow.push('"' + issue.join("|") + '"');
                }
                else {
                    placerow.push('"' + placecol[k].innerText.trim() + '"');
                }
            }
            csv.push(placerow.join("\t"));
        }

        // Download CSV file
        downloadCSV(csv.join("\r\n"), filename);
    }

    var group = document.querySelector('[id=MainContent_ddlAreaGroup]').selectedOptions[0].value;
    var area = document.querySelector('[id=MainContent_DropDownList1]').selectedOptions[0].innerText;
    var date = new Date();
    exportTableToCSV(group + '_' + area + '_' + date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate() + '.csv');

})();