CSV-export för Handelsbanken

Lägger in en knapp för CSV-export bredvid knappen för excel-export i kontoöversikterna

// ==UserScript==
// @name         CSV-export för Handelsbanken
// @namespace    http://tampermonkey.net/
// @version      2.2.0
// @description  Lägger in en knapp för CSV-export bredvid knappen för excel-export i kontoöversikterna
// @author       Oscar Jonsson
// @match        https://secure.handelsbanken.se/*
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
    var iframe,iframeDocument;
    var observer,observerDiv;

    if (window == window.parent) //not inside iframe
      var waitForIframeInterval=setInterval(checkForIframe, 500);

    function checkForIframe(mutationsList, observer) {
        iframe=document.querySelector('iframe[title="Kontotransaktioner"]');
        if (iframe) {//transactions-iframe has been loaded into dom
            clearInterval(waitForIframeInterval);
            var span=document.createElement("SPAN");
            var a=document.createElement("A");
            a.textContent="Exportera till CSV";
            span.appendChild(a);
            a.href="#";
            console.log("iframeadded");

            var icon=document.createElement("IMG");
            icon.src="https://image.flaticon.com/icons/png/512/180/180855.png";
            icon.style.cursor="pointer";
            span.appendChild(icon)
            icon.style.width="20px";

            iframe.onload=iframeLoaded;
            observer.disconnect();
            function iframeLoaded() {
                console.log("iframeloaded");
                iframeDocument=window.iframeDocument=iframe.contentDocument;
                var exportDiv=iframeDocument.querySelector('.printIcon.excelAndPrintHeader');
                if (exportDiv) {//iframeLoaded might have been called buecause it was actually Unloaded
                    exportDiv.insertBefore(span, exportDiv.firstChild);
                    span.addEventListener("click",csvClick);
                }

            }
        }
    }


    function csvClick(e) {
        var accountSel=iframeDocument.getElementById("Konto");
        var clearing=iframeDocument.evaluate('//td[.="Clearingnummer:"]/following-sibling::td',iframeDocument, null, XPathResult.ANY_TYPE, null).iterateNext().innerText;
        var account=accountSel.options[accountSel.selectedIndex].innerText;
        var fromDate=iframeDocument.getElementById("DATUM_FROM").value;
        var toDate=iframeDocument.getElementById("DATUM_TOM").value;
        var fileName="Transaktioner Handelsbanken "+clearing+"-"+account+" "+fromDate+" - "+toDate+".csv";

        var output=clearing+"-"+account+"\nReskontradatum;Transaktionsdatum;Text;Belopp;Saldo\n";
        var transactionsTable=iframeDocument.querySelectorAll("body > form > table")[5];
        var rows=transactionsTable.rows;
        for (var i=1; i<rows.length; i++) {
            var rowcells=rows[i].cells;
            for (var j=0; j<9; j+=2) {
                if (rowcells[j])
                    output+=rowcells[j].innerText;
                if (j<8)
                    output+=";";
            }
            if (i<rows.length-1)
                output+="\n";
        }

        download(fileName,output);
        e.preventDefault();
    }
    function download(filename, text) {
        var element = document.createElement('a');
        element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
        element.setAttribute('download', filename);

        element.style.display = 'none';
        document.body.appendChild(element);

        element.click();

        document.body.removeChild(element);
    }
})();