PASMO履歴照会ページに支払金額を追加するGreasemonkeyスクリプト

PASMOの前日ベースの使用履歴が、https://www.pasmo-mypage.jp/loginwebform.aspx で見られるが、仕様を決めた人が間抜けなので、利用した後の残額しか表示されない。運賃がいくらだったかとか、いくらの買い物をしたかを知るためには引き算が必要。交通費申請をするときなど不便なので、支払額がわかるようにしてみた。

日本語を使っているので、文字コードUTF-8でファイルを作成する必要がある。

tdを挿入しながら処理することになるので、前からやるとどんどんずれていって添え字がよくわからなくなるので後から処理している。

// ==UserScript==
// @name           PASMO
// @namespace      http://d.hatena.ne.jp/otn/
// @description    Calculate each expenditure
// @include        https://www.pasmo-mypage.jp/CardStatusWebForm.aspx
// ==/UserScript==

var tbls=document.getElementsByTagName("table");
var ths=tbls[tbls.length-1].getElementsByTagName("th");
var tds=tbls[tbls.length-1].getElementsByTagName("td");

var th=document.createElement("th");
th.width="45";
th.innerHTML="<font color='#ffffff'>支払額</font>"; // 文字コードはUTF-8
ths[0].parentNode.appendChild(th);

function col7(td){
  td.setAttribute("colspan","7");
}
function val(td){
  return td.textContent.replace(/\**/,"");
}
function addexp(here,exp){
  var td=document.createElement("td");
  td.align="right";
  td.textContent=exp;
  here.parentNode.appendChild(td);
}

col7(tds[tds.length-1]);
addexp(tds[tds.length-2],"***");
for(var i=tds.length-10; i>0; i-=7){
  col7(tds[i+1]);
  addexp(tds[i],val(tds[i+7])-val(tds[i]));
}
col7(tds[1]);
col7(tds[0]);