SW履歴を取得する

このSW履歴を取得する。
https://www.sbifxt.co.jp/fxtaccount/pc/SWHis


参考:
JavaScriptでHtmlのtable要素をCSVに変換する
https://ateraimemo.com/JavaScript/table2csv.html

var downloadAsTextFile = function(fileName, content) {
    var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
    var blob = new Blob([bom, content]);
    var url = window.URL || window.webkitURL;
    var blobURL = url.createObjectURL(blob);

    var a = document.createElement('a');
    a.download = fileName;
    a.href = blobURL;
    a.click();  
};
var downloadAsCSVFile = function(fileName, rows) {
  var content = "";
  for( var i in rows) {
    var ary = rows[i];
    for (var j = 0, m = ary.length; j < m; ++j) {
      content += '"' + ("" + ary[j]).replace('"', '""') + '"';
      if (j !== m) {
        content += ',';
      }
    }
    content += '\n';
  }
  downloadAsTextFile(fileName, content);
};
var table2array =function(table) {
  var array = [];
  var tr = table.getElementsByTagName('tr');
  for(var i = 0; i < tr.length; ++i)
  {
    //前行のセルのcolspanで、すでにこの行は初期化されている場合がある
    array[i] = array[i] || [];
    var cells = tr.item(i).cells;
    for(var j = 0; j < cells.length; ++j)
    {
      var td = cells.item(j);
      //タグの削除、タブをスペースに置換、両側trim、ダブルクオートの二重化
      var text = td.innerHTML.replace(/<.*?>/mg, '').replace(/\t/g,' ').replace(/(^\s+)|(\s+$)/g, '').replace(/\"/, '""');
      //前の行のrowspanですでにこのセルが使用されている場合はxoffだけ移動
      var xoff = 0;
      while(array[i][j + xoff] != null) { ++xoff; }
      array[i][j + xoff] = text;
      for(var k = 1; k < td.colSpan; ++k)
      {
        array[i][j + xoff + k] = text;
      }
      for(var l = 1; l < td.rowSpan; ++l)
      {
        array[i + l] = array[i + l] || [];
        for(var k = 0; k < td.colSpan; ++k)
        {
          array[i + l][j + xoff + k] = text; //同文字列 '〃';
        }
      }
    }
  }
  return array;
};


function getSW(form, queries)
{
  var q = queries.pop();
  if(!q) return;
  
  console.log(q.y + "_" + q.m, q.q);
  $.ajax({
    url:  form.attr('action'),
    type: form.attr('method'),
    data: q.q,
    success: function(res)
    {
      var table = $(res).find("table").get(0);
      console.log(table);
      if(table)
      {
        downloadAsCSVFile("sw_" + q.y + "_" + q.m + ".csv", table2array(table));
      }
      setTimeout(function() { getSW(form, queries);}, 1000);
    }
  });
}
var form = $("form");
var year = $("[name=YEAR] option", form);
var month = $("[name=MONTH] option", form);
var queries= [];
year.map(function() { return this.text; }).each(function(i, y) {
  month.map(function() { return this.text; }).each(function(i, m)
  {
    year.val(y);
    month.val(m);
    queries.push({y: y, m: m, q: $("form").serialize()});
  });
});

getSW(form, queries);