Chrome 拡張機能で CSV ファイルを生成してダウンロードする方法
はじめに
Chrome 拡張機能で CSV ファイルを生成してダウンロードする方法について整理した。
TL;DR
ほぼ JavaScriptでファイルダウンロード処理を実現する - Qiita の通り
new Blob
でオブジェクトを生成createObjectURL
で URL に変換<a href="..." download="hoge.csv">
でダウンロード
目次
環境・条件
Google Chrome バージョン: 77.0.3865.120(Official Build) (64 ビット)
詳細
リポジトリ: 17number/chrome-extension-file-download-example
拡張機能を有効化後に Google のトップページ(https://www.google.co.jp/
)にアクセスすると、以下内容の CSV ファイルを生成・ダウンロードするサンプルコード。
1 | あいうえお,かきくけこ,さしすせそ |
JavaScriptでファイルダウンロード処理を実現する - Qiita を参考にした。
manifest.json
Google のトップページ(https://www.google.co.jp/
)でのみ動作するように指定。
1 | { |
JS(main.js)
ほぼ JavaScriptでファイルダウンロード処理を実現する - Qiita の通り。
1 | function handleDownload() { |
主な変更点は下記。
handleDownload
をmain.js
内に直接定義(<script>
タグは使わない)window.URL.revokeObjectURL
をsetTimeout
で実行- コメント で「解放した方が良い」とあったが、
href
設定時に実行するとダウンロードエラーになるためsetTimeout
でタイマー設定
- コメント で「解放した方が良い」とあったが、
onClick="handleDownload"
だとエラーになるので、addEventListener
でイベントリスナーを設定- ついでに即クリック、即削除しているが、実際の拡張機能ではダウンロードリンクを表示しておいて良いと思う
まとめ
ほぼ JavaScriptでファイルダウンロード処理を実現する - Qiita の通り
new Blob
でオブジェクトを生成createObjectURL
で URL に変換<a href="..." download="hoge.csv">
でダウンロード
参考文献
- JavaScriptでファイルダウンロード処理を実現する - Qiita
- Blob - Web API | MDN
- URL.createObjectURL() - Web API | MDN
- URL.revokeObjectURL() - Web API | MDN
関連記事
- Chrome 拡張機能で background scripts から content scripts にメッセージを送信する
- Vue.js を使ってメインページ側で動作する Chrome 拡張機能を開発する方法
- vue-web-extension を使って Chrome 拡張機能を開発する方法
- Chrome 拡張機能を React などで構成された SPA で動作させる方法
- webpack & Babel を使って Chrome 拡張機能を開発するためのテンプレート(Hot Reload 付き)
- jQuery Select2 で、初期値の設定と選択状態のクリア
- JavaScript で URL のクエリパラメータを操作する方法
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)