漫画家の方などが、確定申告用にアマゾン(Amazon.co.jp)の注文履歴から Kindle を検索して領収書を個別に表示・印刷するのが手間がかかる、というようなことを Twitter でつぶやいておられたので、まとめて印刷出来たら少しは楽かな?と思い、スクリプトを書いてみました。
PC 用ブラウザ向けの拡張機能/アドオン/ユーザースクリプトであり、Google Chrome/Firefox Quantum (ユーザースクリプトは Tampermonkey)上で動作確認しています。
インストール
Firefox Quantum アドオン版(WebExtensions)
https://addons.mozilla.org/ja/firefox/addon/amzorderhistoryfilter/addons.mozilla.org
より、ページ上に表示されている [+ Firefox へ追加] ボタンを押してインストール。
ユーザースクリプト(Tampermonkey)版(Firefox/Google Chrome対応)
Firefox+Tampermonkey、Google Chrome+Tampermonkeyの環境で、
アマゾン注文履歴フィルタ ・ユーザースクリプト版(amzOrderHistoryFilter.user.js)
GitHub - furyutei/amzOrderHistoryFilter: アマゾン(amazon.co.jp)の注文履歴を月別表示したり、月別もしくは通年の領収書をまとめて表示・印刷したりできるようになります。
をクリックし、指示に従ってインストール。
使い方
インストール後、注文履歴を表示し、対象となる年を選択します。
動作するのは、年を選択した場合だけです。「過去6カ月間」「過去30日間」では動作しませんので、ご注意を。
すると、対象月を選択するためのプルダウンメニュー、および絞り込み用チェックボックスが表示されます。
対象月を選択すると、該当する注文一覧が表示されます。
表示されるまでに読み込みに時間がかかることがあります。
[領収書印刷用画面]ボタンを押すと、別タブが開き、対象となる注文の領収書を読み込みます。
「☑デジタル」「☑デジタル以外」の両方にチェックしている場合、それぞれは別々のタブに開きます。
領収書の読み込み完了するまでお待ちください。
対象となる注文の数が多いほど、読み込み時間も長くなります。
読み込みが完了すると、同じページ内に複数の領収書がまとめて表示されます。
各領収書は横罫線で区切られ、便宜上のNo.が振られます。No.は個別領収書へのリンクになっています。
印刷時には、横罫線は表示されず、改ページとなります。また、No.リンクも非表示となります。
これで、ブラウザの機能により(「このページを印刷してご使用ください」リンクをクリックするか、[Ctrl]+[P]を押します)
複数の領収書がまとめて印刷できます。
Firefox では、この方法ではプレビューは表示されません。プレビューを表示したい場合、右上のメニュー(≡)→「印刷...」とします。
まとめて印刷する関係上、ヘッダがあると 、URL 等の領収書と一致しないものが出てしまいますので、気になる場合にはヘッダ・フッタを印刷しないようにした方が良いでしょう。
Google Chrome では、印刷プレビュー画面左上にある「送信先」を「PDF に保存」に変更すると、印刷する代わりに PDF ファイルとして出力することができます。
後で見直したり、必要なものだけを印刷したりする場合には、PDF に保存しておいた方が便利かもしれません。
FIrefox では、標準では PDF で保存する機能は無いようですので(当方が知らないだけかも知れませんが)、別途そのためのアプリが必要になります。
無料のものだと、
www.cube-soft.jp
といったものがあるようです。
免責事項(念のため)
ご利用の際には全て自己責任でお願いします。
不具合があったり、使用した結果等により万一何らかの損害を被ったりした場合でも、作者は一切関知いたしませんので、悪しからず。
お問い合わせ先
お問い合わせやご要望などありましたら、この記事のコメント欄か、@furyuteiまでお願いします。
不具合報告やご要望などは、GitHubのIssuesへもどうぞ。
「気に入った!」のお気持ちは、ギフト券で!
せっかくのアマゾン用の拡張機能/アドオンなので(笑)、「気に入った」「役に立った」と思われたら、いくらかでも Amazon ギフト券で頂けると、大喜びします!
- 受取人メールアドレス:「furyutei@gmail.com」
- メッセージで何かひとこといただけると嬉しいです
贈り方は、
等をご参照ください。
開発経緯
Twitter 上で、
のようなツイートを見かけたことがきっかけです。
もっとも、自分自身は確定申告の経験が無いため、これで役に立つのかどうかは不明です(苦笑)。
覚書を兼ねた独り言
作成中にハマった点など
今回も思わぬところでハマりまくりました……。
- 領収書専用のウィンドウを開いて、そこに領収書分だけタブを開き、後で全タブ選択して印刷すればできたりしないか?
→タブを複数選択しても、印刷されるのは現在表示されているページだけだったのでダメ - 注文履歴ページを $.ajax() で取得すると、よくわからない(HTMLではない)ファイルが返る
→リクエストヘッダに X-Requested-With : XMLHttpRequest が含まれると、Amazon から HTML ではない形式で返されてしまう模様
→crossDomainパラメータをtrueで指定してやるとX-Requested-Withが送られなくなった(参考1、参考2) - Firefox のアドオン版として動かしたときだけ、$.ajax() によるページ読み込みが失敗する
→$.ajaxに指定する際、url は相対パスだとだめ("SyntaxError: The URI is malformed."エラー)
→ new URL() で絶対パスに変換して大丈夫になった - 注文履歴を取得して表示する際、件数が多いと表示が固まってしまう
→ブラウザのウィンドウ内で見えない分は非表示にし、スクロールしたときに必要分だけ表示するようにして対応 - 領収書を $.ajax() 等で取得すると、支払情報等の欄が入っていない
→スクリプトで動的に表示するようになっているらしい
→裏で(IFRAMEで)開いて、表示が落ち着くまで監視し、落ち着いたら HTML を取得して親ウィンドウに postMessage() で送信することで対応 - 領収書の数が多いと、ブラウザが固まる・応答しなくなる等の現象が発生
→領収書の数だけIFRAME作っていたので(開きすぎだ)、一定数だけ開き、終わったら使いまわすことで対応 - アイコン作成が面倒
→面倒だけど、やるしかなかった(苦笑)
その他に気付いたことなど
- 一度でも領収書を表示してしまうと、二度目からは問答無用で「再発行」扱いになるっぽい……(今のところ、デジタル注文の場合、再発行にはならないが)
これ、消したくなるな……普通にテキストだから修正できるんだよね……でもなぁ……