古い記事
ランダムジャンプ
新しい記事
「アマゾンの商品ページのURLって、SEO対策で長くなってる上に、 いろいろなパラメータがくっついてて複雑で扱いづらいので、ASIN だけ取り出してそれだけを使って何かをするぜ!」
ということをやりたいので、そのためのブックマークレットの雛形を作りました。

参考にしたサイトは以下:

で、まずは雛形となる JavaScript コード:
var u = location.href;
if (u.search(/[^0-9A-Z]([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/) !=- 1) {
    var asin = RegExp.$1;
    ここで何かをする。
}

このコードを一行にしてリンクにするというのが基本。
詳しくは下記の応用例を見てください。
それぞれのブックマークレットは、Amazon の商品ページで呼び出します。

応用例1:簡単なURLのアマゾン商品ページに飛ぶ


JavaScript コード:
var u = location.href;
if (u.search(/[^0-9A-Z]([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/) != -1) {
    var asin = RegExp.$1;
    location.href = 'https://www.amazon.co.jp/dp/' + asin;
}

ブックマークレット化(上記のコードを短くしています):
  • Simple Amazon Url Bookmarklet: [SAU]
    javascript:(function(){if(location.href.search(/[^0-9A-Z]([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/)!=-1){location.href='https://www.amazon.co.jp/dp/'+RegExp.$1;}})();
    

同じウィンドウでページだけ変えるときは、「javascript:(function(){...})()」とするみたいです。

関連記事:

応用例2:アフィリエイトURLにする


アソシエイトID付きのURLに変換します。
中身は応用例1とほぼ同じです。

JavaScript コード:
var u = location.href;
if (u.search(/[^0-9A-Z]([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/) != -1) {
    var asin = RegExp.$1;
    location.href = 'https://www.amazon.co.jp/exec/obidos/ASIN/'
        + asin + '/yto-22';
}

ブックマークレット化(上記のコードを短くしています):
  • Asamasi Bookmarklet: [ASMS]
    javascript:(function(){if(location.href.search(/[^0-9A-Z]([B0-9][0-9A-Z]{9})([^0-9A-Z]|$)/)!=-1){location.href='https://www.amazon.co.jp/exec/obidos/ASIN/'+RegExp.$1+'/yto-22';}})();
    

アソシIDは各自変更してください。

フォロー


瀬戸口さんのコメント:
http://twitter.com/setomits/status/1034125088
URL から取るより
document.getElementById('ASIN').getAttribute('value')
とかの方が良くないです?
確かにこの方法だと誤りなくASINが取得できるのですが、同じアマゾンの商品ページでもカスタマーレビューページ(http://www.amazon.co.jp/review/product/4569702791)などでは id="ASIN" がなかったりするので、使えないのです。
しょんぼり。

履歴

  • 追記160530: 今はなきヤサゾン用のブックマークレットを削除。
  • 追記160610: アマゾンの仕様により、変換後の URL が http だとリダイレクトされるようになったので、https にしました。