【脱・ファイル名地獄】国のデータをリンク名でそのままダウンロードできるChrome拡張機能を作った話

未分類

みなさんこんにちわ。いかがお過ごしですか。

厚生労働省や総務省などの公的機関のWebサイトを使ったことがある方なら、一度はこんな経験をしたことがあるはずです。

「ページを開いたらExcel ファイルのダウンロードリンクが50件以上並んでいて、まとめてダウンロードしたら全部 `001492951.xlsx` みたいな名前になってた」

ページ上にはちゃんと読める名前が書いてある。なのにダウンロードすると数字のファイル名になる。

ダウンロードした後にファイルを一個ずつ開いて中身を確認して、手動でリネームして……という作業を何度やっただろうか、と思い返してうんざりしました。

「ページに書いてあるリンク名でそのままダウンロードできれば全部解決するのに」

そう思って作ったのが今回紹介する リンクダウンローダー です。

プロフィール

Kota
35歳の医療コンサルタント。とんねるめがほん運営。
9年間医療事務として外来・入院を担当。
毎月約9億円を請求していました。
現在は“医業経営コンサルタント”として活躍中。
投資もそこそこに継続中。米国株を主軸としてETFや不動産も少々投資しています。
趣味は読書・ギター・ドライブ・ダーツ。DJもたまにやります。
Twitterはこちら

スポンサーリンク

こんな人に使ってほしい

  • ダウンロード後のファイルのリネーム作業に疲れている人
  • 一つのページから大量のファイルをまとめてダウンロードしたい人
  • データ分析や調査で公的統計データを日常的に扱う人

リンクダウンローダーでできること

① ページ内のダウンロードリンクを自動で一覧表示

拡張機能のアイコンをクリックするだけで、そのページにある Excel・PDF・ZIP・CSV・Word などのファイルリンクをすべて自動でスキャンして一覧に表示します。

ページの見出し(カテゴリ)ごとにグループ化されるので、どのファイルが何のカテゴリに属しているかも一目で分かります。

② リンク名をそのままファイル名にしてダウンロード

これがこの拡張機能のいちばんの機能です。

  • リンク名(デフォルト)
  • 元のファイル名
  • カスタム名

ドロップダウンで切り替えるだけ。リネーム作業がゼロになります。

③ 全選択・個別選択でまとめてダウンロード

  • 全選択ボタンで表示中のファイルをまとめて選択
  • カテゴリ単位での一括選択も可能

不要なファイルは個別のチェックボックスで外せます。

ファイルが多いページでも、必要なものだけを素早く選んでダウンロードできます。

④ ファイル種別フィルターとテキスト検索

「Excelだけダウンロードしたい」「この名前が含まれるファイルだけ選びたい」という場合に便利な機能です。

ファイル種別フィルター:`全て` `Excel` `PDF` `ZIP` `CSV` `Word` `その他` の7種類が選択できます。

テキスト検索:リンク名・ファイル名をリアルタイムで絞り込みできます。

⑤ カテゴリ別サブフォルダに自動振り分け

「サブフォルダ」をオンにすると、ページの見出し(カテゴリ)ごとにフォルダを作成してダウンロードします。

大量のファイルをダウンロードしても、後からフォルダを整理する手間がなくなります。

⑥ ダウンロード進捗の表示

「どこまでダウンロードできた?」がひと目で分かるプログレスバーを表示します。

ちなみにサーバーへの負荷を抑えるため、ファイルとファイルの間に300ms の間隔を設けています。

インストール方法

現在 Chrome ウェブストアへの申請は行っていないため、手動でのインストールが必要です。手順は簡単です。

ステップ 1:ファイルをダウンロード

GitHub - kota777777/link_downloader: リンクダウンローダー
リンクダウンローダー. Contribute to kota777777/link_downloader develop...

から最新版の ZIP ファイルをダウンロードして解凍してください。

ファイルは動かすと動作しないので、”ドキュメント”など普段動かさないところに保管しておくとよいです。

ステップ 2:拡張機能管理ページを開く

Chrome のアドレスバーに以下を入力して Enter を押します。

“`

chrome://extensions/

“`

ステップ 3:デベロッパーモードをオンにする

画面右上の「デベロッパーモード」トグルをクリックしてオンにします。

ステップ 4:フォルダを読み込む

パッケージ化されていない拡張機能を読み込む」ボタンをクリックし、解凍した `link-downloader-extension` フォルダを選択します。

ステップ 5:完了

ブラウザ右上に 🔗 アイコンが表示されれば完了です。

技術的な話(興味ある人向け)

構成

Chrome 拡張機能の仕様である Manifest V3 で実装しています。

link-downloader-extension/
├── manifest.json       # MV3設定
├── content_script.js   # DOMスキャン・リンク抽出
├── service_worker.js   # ダウンロードキュー管理
└── popup/
    ├── popup.html
    ├── popup.js
    └── popup.css

こだわりポイント

ファイル名のサニタイズ

リンクテキストには `初再診料_性年齢別算定回数 [63KB]` のようにサイズ情報が末尾に含まれていることがあります。これを自動で除去したうえで、Windowsで使えない文字(`< > : ” | ? *` など)も安全な文字に置換しています。

カテゴリの自動判定

リンクの親要素を DOM 上で上方向に遡り、最も近い `h1`〜`h4` の見出しテキストを取得することでカテゴリを自動判定しています。ページの構造に合わせて動的に判定するので、省庁サイト以外でも機能します。

ダウンロードの間隔制御

一度に大量のリクエストを投げるとサーバーに負荷をかけてしまうため、Service Worker 側でファイルとファイルの間に 300ms の待機を設けています。

対応ファイル形式

  • Excel | .xlsx / .xls / .ods |
  • PDF | .pdf |
  • 圧縮ファイル | .zip / .gz / .tar / .rar / .7z |
  • CSV | .csv |
  • Word | .docx / .doc / .odt |
  • PowerPoint | .pptx / .ppt / .odp |

まとめ

「国のデータ、ファイル名が数字で全然分からない」という地味だけど毎回ストレスになる問題を解決するために作りました。

ニッチな悩みかなとも思いましたが、公的統計データを日常的に使っている人には刺さるんじゃないかと思っています。ファイルが多いページほど、使う価値が上がります。

Chrome ウェブストアへの登録も検討中です。それまでの間は GitHub からインストールして使ってみてください。フィードバックがあればXにてご連絡ください。

この記事で紹介している拡張機能は個人が開発したものです。利用は自己責任でお願いします。