-
-
Save kassyi/55adf99d676e550cd5946a0bc821d73b to your computer and use it in GitHub Desktop.
Amazon購入履歴のCSVエクスポート (2017 年バージョン)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Amazon購入履歴のCSVエクスポート | |
// | |
// 使い方: | |
// 1. 全部コピーする (右上の Raw をクリックした先でやるのが楽) | |
// 2. Amazon の注文履歴ページ ( https://www.amazon.co.jp/gp/css/order-history/ ) を開く | |
// 3. F12 または 右クリ→要素の検証 とかで出てくる開発者ツールのコンソール (JavaScript REPL) にペースト | |
// 4. エンターで実行 | |
// (Firefox はなんか allow pasting とタイプしろみたいなことを言われるので従う) | |
// 5. しばらく待つと、コンソールに合計金額が表示され、CSVが保存される | |
// | |
// 2014-12-28 / 2016-05-10 時点での DOM 構造に対応, Firefox と Chrome でテスト済 | |
// 2017-02-18 CSV保存機能の追加 | |
javascript:(function(){(function(){var h="<br>";var g={};var f="2017";var i=false;function k(m){if(typeof m!=="number"){var m=0;f=window.prompt("何年分の注文を集計しますか?\n - 半角数字4桁で入力してください",f);f=Number(f);jQuery("body").prepend('<div id="popup"></div>')}var d=j(m,false);jQuery("#popup").append("<p>"+f+"年の集計中… / "+(m+1)+"ページ目</p>");console.log(f+"年の集計中… / "+(m+1)+"ページ目");d.done(function(n){if(typeof g[f]==="undefined"){g[f]=n}else{g[f]=g[f].concat(n)}k(m+1)}).fail(function(){if(i&&new Date().getFullYear()>f){f++;k(0)}else{var n=0;var o;jQuery.each(g,function(r,q){var p=0;jQuery.each(q,function(){p+=this.price});n+=p;o=q});jQuery("#popup").append("<p>合計 "+n+" 円</p>");console.log("合計 "+n+" 円");a("amazon_report_"+f+".csv",c(o))}})}function j(m,d){var o=jQuery.Deferred();var n=b(m,d);n.done(function(q){var r=jQuery.parseHTML(q);var p=[];jQuery(r).find("div.order").each(function(){var u=jQuery(this);var z=jQuery(u.find("div.order-info span.value")[0]).text();var s=new RegExp("(\\d{4})年(\\d{1,2})月(\\d{1,2})日");z.match(s);var A=RegExp.$1;var x=RegExp.$2;if(x.length<=1){x="0"+x}var B=RegExp.$3;if(B.length<=1){B="0"+B}var t=""+A+"/"+x+"/"+B;var w=jQuery(u.find("div.order-info span.value")[2]).text().trim();var C=jQuery(u.find("div.order-info a.a-link-normal")[0]).attr("href");if(C!=undefined){C="https://www.amazon.co.jp"+C}else{C="N/A"}var y=[];u.find("div.a-row>a.a-link-normal").each(function(){var F=jQuery(this).text().trim();var G=jQuery(this).parent().parent().find("div.a-row>span.a-color-price").text().trim().replace(",","");y.push("["+G+"] "+F)});var E=y.join(h);var D=jQuery(u.find("div.order-info span.value")[1]).text();var v=Number(D.match(/[0-9]/g).join(""));if(d){console.log(E,v)}p.push({date:t,orderNumber:w,price:v,item:E,orderDetailURL:C})});if(p.length<=0){o.reject()}else{o.resolve(p)}});return o.promise()}function b(d){var m=jQuery.Deferred();jQuery.ajax({url:"https://www.amazon.co.jp/gp/css/order-history?digitalOrders=1&unifiedOrders=1&orderFilter=year-"+f+"&startIndex="+d*10,beforeSend:function(n){n.setRequestHeader("X-Requested-With",{toString:function(){return""}})}}).success(function(n){m.resolve(n)}).fail(function(n,o){if(verbose){console.log("fail",o)}});return m.promise()}function c(q){var p="";for(var m=0;m<q.length;m++){if(p==""){var o="";for(var n in q[m]){if(o!==""){o+=","}o+='"'+n+'"'}p+="\ufeff"+o+"\r\n"}var d="";for(var n in q[m]){if(d!==""){d+=","}d+='"'+q[m][n]+'"'}p+=d+"\r\n"}return p}function a(d,o){var m=document.createElement("a");m.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(o));m.setAttribute("download",d);if(document.createEvent){var n=document.createEvent("MouseEvents");n.initEvent("click",true,true);m.dispatchEvent(n)}else{m.click()}}if(typeof jQuery!=="function"){var e=document;var l=e.createElement("script");l.src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js";l.onload=k;e.body.appendChild(l)}else{k()}})();})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment