SNSなどでできるだけ短くしたいときに使えます.
短縮サービスは使いません.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.6
スポンサーリンク
商品URLは単純に端折れる
例えばApple AirPod Proの商品リンクは
www.amazon.co.jp/Apple-%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB-MWP22J-A-AirPods/dp/B07ZPS4FSW/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=apple&qid=1624519357&sr=8-6
となっています(スキームhttps://を抜いてあります).
もちろんそのままアクセスしてもいいのですが, 実際には
でもアクセスできます. ここでASINというのはアマゾンが発行する, 書籍を除く商品につけられたコードです.
URLにももちろん含まれており, /dp/から続く10桁の文字列がこれに相当します, なので上記AirPodsの場合はB07ZPS4FSWであり, またアマゾンはhttps://amazon.jpでもアクセスできることから更に文字列を省略して
とできます.
よってその商品のURLを短くする手法として, 商品ページからURLを取得し, ASINだけ抜き取って上のURLに置き換えればいいわけです.
フロー
というわけで実際に作ってみます.
今回はブラウザにしろアプリにしろ, 共有からレシピを使うタイプとなるため, レシピの「共有シートに表示」をオンにし, 少なくとも「URL」の項目にチェックを入れた状態にしておきます.
その上で「ショートカットの入力」からURLを得るわけなんですが, 原因は不明ですがこの時点で同じURLを2つ取得してしまう現象を確認しています.
アソシエイトが影響してるかも…と思ったんですが結局わからずじまいなので, やむなく「ショートカットの入力」を直に使わず, 「テキストを分割」で改行で分割し, その最初の項目を取得することでURLを確実に一つにすることで回避しています(これがなければこの2つのアクションは不要だったんですが…).
ともかく, 共有から得たURLから/dp/~の部分を「一致するテキスト」で取得し, "https://amazon.jp"の後ろに繋げます.
今回はこれを表示するだけにしました.
なお「一致するテキスト」では正規表現を使っています.
/dp/は一致するかを見たい初めの部分なのでともかく, 残る.[0-9A-Z]{9}の説明ですね.
まず.は「任意の一文字」にマッチします, アルファベットでも英数字でもなんでもいいです.
次に[0-9A-Z]は10種の数あるいは26種のアルファベットのいずれかにマッチします.
[01234...]と書いてもいいみたいですがこのように省略できるみたいですね.
最後に{9}というのは直前の文字の桁数を指定します.
今回は[0-9A-Z]が対象, つまり[0-9A-Z]{9}で「数字またはアルファベット9文字」という意味です.
あれ?でもASINは10桁だからおかしいよね?って思いますよね.
これは[0-9A-Z]{9}の手前にある.で一文字マッチしているため, これを合わせて10桁にする必要があるからです.
というわけで実行してみます.
商品ページの共有ボタンは商品画像右上にあります.
問題なければ画像のように表示されます.
〆
他の短縮サービスと比べちょっとは長いですがそれでも35文字まで短くなります.