スキップしてメイン コンテンツに移動

投稿

2020の投稿を表示しています

NDLサーチで蔵書録づくり

家の本棚を整理したく、また某図書室の整理ボランティアも買って出た関係で、本の分類番号を取得したくなった(背ラベルの消えた本多数)。 蔵書録をつくるプログラムは前にも Excel VBA + Amazon API で作ったけど、Amazon APIから日本十進分類法(NDC)の番号はもらえない。まあ当然。 今回は、国立国会図書館のAPIとGoogle Apps Script (Google Spreadsheetにバインドしたプロジェクト) で作ることにした。 仕組みはこんな感じ: UrlFetchApp.fetch で下記URLにqueryの値を追加してリクエスト https://iss.ndl.go.jp/api/sru?operation=searchRetrieve&recordPacking=xml&recordSchema=dcndl_simple&onlyBib=true&maximumRecords=20&query= query の中身はたとえば isbn="1234567890" とか title="あいう" AND creator="かきく" とか。それを encodeURIComponent でエンコードしたもの。 NDLへのリクエストは5秒に1回という制限があるので、Utilities.sleep で適宜待つ。 fetchした結果を XmlService.parse して内容を取り出す。namespaceの指定が全部必要。無印タグにも必要(はまった)。XMLの常識?もう何もかも忘れてる。 検索結果が1件なら、そのままSpreadsheetに書き出して、次の本を再帰的に検索。 複数あれば ui.showModalDialog でダイアログを表示して選択させる。ダイアログから google.script.run() で書き出す関数を実行。successHandlerで次の検索を再帰的に呼び出し。 ダイアログはいつ閉じれば?と迷ったけど、単純に上の実行の次行に google.host.close() でできた。 検索キーはisbnまたはtitle。titleが短いばあいは完全一致指定 (title exact &qu