Amazon の商品ページの URL
Amazon の商品ページの URL は、そのたどり着く経路によって様々なパラメータを引き連れてきます。例えば以下のような感じです。
Amazon.co.jp: Amazon Web Services クラウドデザインパターン 実装ガイド 改訂版 日経BP Next ICT選書 電子書籍: アマゾン データ サービス ジャパン 玉川憲, 片山暁雄, アイレット 鈴木宏康, 日経SYSTEMS: Kindleストア:
商品ページを他の人に伝えるのにこれではカッコ悪いので、ASIN のみのシンプルな URL に変換しましょう。
Amazon の URL を短縮するブックマークレット
結論から書きますと、以下のブックマークレットを用いましょう。
javascript:(function(){var a=document.getElementsByName("ASIN.0")[0]?document.getElementsByName("ASIN.0")[0].value:document.getElementsByName("ASIN")[0]?document.getElementsByName("ASIN")[0].value:"ASIN\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f";location.href="https://www.amazon.co.jp/dp/"+a})();
リンクから保存する場合は以下をどうぞ。
説明
実は以前から同じ挙動のブックマークレットを使っていたのですが、最近正しく動かなくなりました。その原因は2つありました。
1. Kindle の ASIN が取得できない
まず document.getElementById('ASIN').value では Kindle の ASIN が取得できない(はず)です。これは document.getElementsByName('ASIN.0')[0].value を考慮することにより問題なくなりました。ただし、これから仕様変更があった場合には当然未対応になることも考えられます。あと蛇足ですが、getElementByName ではなく getElementsByName です。これで実は小一時間ハマりました…。
2. https
いつからかは分からない(覚えていない)のですが、商品ページのプロトコルが https になっていました。http で飛ばしてしまうと元のページに戻されてしまいますので、飛ばす先はしっかりと https を指定する必要があります。
応用
このブックマークレットを応用すれば、例えば商品名と組み合わせたテキストを生成し、それをポップアップでコピー誘導してコピペ用にする、などのことも簡単でしょう。興味があれば試してみてください。
余談
ASIN が10ケタであることが永遠に保証されるのであれば、以下のようにもっと簡単に書けます。
javascript:(function(){if(location.href.search(/([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/)!=-1){location=('https://www.amazon.co.jp/dp/'+RegExp.$1);})();