業務用ブックマークレット

業務用に作成したのでメモ。
琉大図書館の蔵書検索の書誌詳細画面から、書名やパーマリンク所蔵情報を抽出して新規ウィンドウで開きます。蔵書検索の詳細画面では、本の出納に必要な情報だけ、コピペするのが面倒なので作成しました。

保証の限りではありませんが、NTTデータ九州の図書館システムNALISを利用している機関であれば動くのではないかと思います。

ブックマークレット : 書誌情報取得

使い方

f:id:otani0083:20150527224335j:plain

  • 蔵書検索の書誌詳細画面で、ブックマークをクリックします。仮に以下のURLで使用したとします。

http://opac.lib.u-ryukyu.ac.jp/cgi-bin/opc/opaclinki.cgi?ncid=BB05322264

  • 新規ウィンドウが開き、以下のような情報が表示されます。

f:id:otani0083:20150527224100j:plain


変数名を短くしたので、可読性は低いですがコードはこんな感じです。

var eCN = function (tR2) {
  var fD = tR2[0].children[0].children[0].innerHTML;
  var sD = tR2[1].children[0].children[0].innerHTML;
  var tD = tR2[2].children[0].children[0].innerHTML;
  return fD.replace(/\s+/g, "")+"/"+sD.replace(/\s+/g, "")+"/"+tD.replace(/\s+/g, "");
};
var eD= function (tableRow,cellsLength) {
  var rA = [];
  if (cellsLength==6) {
    if (tableRow.cells[0].innerHTML == " ") {
      rA[0]="--";
    } else {
      rA[0]=tableRow.cells[0].innerHTML;
    }
    rA[1]=tableRow.cells[1].children[0].innerHTML;
    rA[2]=eCN(tableRow.cells[2].children[0].children[0].children);
    rA[3]=tableRow.cells[3].innerHTML;
    rA[4]=tableRow.cells[4].innerHTML.replace("<br>", " ");
  } else if (cellsLength==4) {
    rA[0]="--";
    rA[1]=tableRow.cells[0].children[0].innerHTML;
    rA[2]=eCN(tableRow.cells[1].children[0].children[0].children);
    rA[3]=tableRow.cells[2].innerHTML;
    rA[4]=tableRow.cells[3].innerHTML.replace("<br>", " ");
  }
  return rA;
};
var elms = parent.contents.document.getElementsByClassName("tbl_table");
var ncid=parent.contents.document.forms.exportd.lnk_ncid.value;
var bT=parent.contents.document.forms.exportd.lnk_title.value;
var rowLen=elms[0].rows.length;
var rL=[];
for( var i = 1; i<rowLen ; i++ ) {
  var rowCounter=elms[0].rows[i].cells.length;
  rL.push(eD(elms[0].rows[i],rowCounter));
}
var rT="";
for (var i in rL){
      if (rL[i].length==5){
      rT+=rL[i][0]+" | "+rL[i][1]+" | "+rL[i][2]+" | "+rL[i][3]+" | "+rL[i][4]+"<br/>";
    }
}
(function () {
    var win = window.open();
    win.document.write("<html><head><title>書誌情報</title></head><body></body></html>");
    win.document.body.innerHTML = "<p>-------</br>書名 : "+bT+"<br/>"+"URL: "+"http://opac.lib.u-ryukyu.ac.jp/cgi-bin/opc/opaclinki.cgi?ncid="+ncid+"<br/>"+"巻号 |所在 | 請求記号 | 図書ID| 資料状態<br>"+rT+"</p>";
})();

これを以下のサイトで圧縮?しました。
http://ted.mielczarek.org/code/mozilla/bookmarklet.htmlted.mielczarek.org

Javascriptはさっぱりなので、もっと効率の良い方法などあればご指摘いただければ幸いです。

ブックマークレットの使い方や自分でも作ってみたいという方は、id:haseharuの以下の記事もご参考に。haseharu.hatenablog.com