[GAS] 短縮 URL から短縮前の URL をもとめる


GAS 開発案件にて、短縮 URL の元を知る要件が出てきたのでメモにします。

短縮 URL は、長い URL をコンパクトにします。10~20桁程度のランダムな ID を引数にして問い合わせ、それを短縮 URL サーバーで解釈し、対応する URL にリダイレクトする仕組みです。

https://bit.ly/3WgfF0c

https://fujitatakesh.net

この短縮 URL からリダイレクト先を取得する方法については、元の URL にアクセスする際に、リダイレクトフォローをしないようにオプションを追加します。followRedirects: false を指定して fetch を行います。

function getUnshortenedURL(_url) {
  console.log(UrlFetchApp.fetch(_url, {
    followRedirects: false    
  }).getHeaders().Location);
}

リダイレクトの応答の中に「Location」というヘッダがついてきます。これがリダイレクト先の指定です。今回は1文で表現していますが、応答から全ヘッダを取得し、そのうちの Location ヘッダを応答しています。