SpreadSheetに入力したURLをGASを使ってBit.lyの短縮URLにする(非エンジニア向け)

久々に必要があって短縮URLを生成するSpreadsheetを作り直しました。数年前に使っていたシートの関数が使えなくなっちゃってたので。。

webで検索すると一括で短縮にするGAS(GoogleAppScript)は見つかるのですが、1セルずつ処理するやつが見当たらず(ガチエンジニアじゃないのでコピペで使えるやつを探しちゃうんですよね・・・)

改めて、今回実装した方法と2023年5月時点で利用可能なソースコードをも貼っておきます。

Bit.lyのアカウントを取得する

まずBit.lyにアカウント登録します。アカウント登録方法は検索すればやまほど出てくるのと簡単なので割愛w。短縮URL生成のAPIは無料アカウントでも使えるので(利用数に制限はあれど)いったん無料でOKです。

ログイン後、設定>API画面で、Access tokenを取得します。パスワード入れてGenerate tokenを押すとAccess tokenが表示されるのでそれをコピーしておく

ここまででBit.lyの作業は終わり。次にGoogleSpreadSheetへ。

GoogleAppScriptを記載する

GoogleSpreadSheetを開いて、拡張機能>Apps Scriptを選ぶ

scriptを記述する画面が開くので、Apps Scriptに適当名前をつけてください。

赤枠内に↓のコードをコピペします。ちなみにこのソースコードはChatGPTに聞いて教えてもらったものですw。便利な世の中になったよほんと。

function getShortUrl(longUrl) {
  var apiKey = 'ここにコピーしたAccess tokenを記述する';
  var apiUrl = 'https://api-ssl.bitly.com/v4/shorten';
  
  var payload = {
    "long_url": longUrl
  };
  
  var options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "Bearer " + apiKey
    },
    "payload": JSON.stringify(payload)
  };
  
 var response = UrlFetchApp.fetch(apiUrl, options);
 var jsonResponse = JSON.parse(response.getContentText());
 return jsonResponse.link;
 
}

コピペして変更するのは2行目のAccess tokenのみ。Bit.lyでコピったAcccess tokenを貼ります。

ここまでできたらいったん保存して実行してみます。

初回はこのScriptを実行していいか?の権限承認が必要でGoogleの権限確認へ進みます。権限確認でこの画面が出てくるんですが、モザイクかけてるデベロッパーのアドレスは自分になってるはずなので(自分で自分を信頼するという謎の処理が必要w)、詳細を表示リンク>安全ではないページに移動に遷移してください。

こんな怖い画面出されたら普通の人はびびるよなw。

プログラム実行の初回のみこの処理をすればOKです。最後にSpreadSheetからこの関数を呼び出して実際に短縮URLを生成します。

SpreadSheetから関数を呼び出す

短縮したいURLが記載されているセルを、 getShortURL()関数で指定するだけです。

↓の図ではG3のセルに、F3のセルのURLの短縮URLが表示されます。

おまけ API利用制限数について

この関数が呼び出されるたびにAPIを叩いているので利用カウントされている(と思われます)。なので、この関数がめっちゃ入ったスプシをたくさんの人が開くと制限にひっかかっちゃいます。

制限数については1ヶ月に◯回、みたいなタイプと短時間にどれくらいみたいなパターンがあるようです。

私もいろいろ試してるとこういうエラーが表示されました。

Code 429 のエラーは公式のドキュメントによると、1時間もしくは1分あたりの制限にひっかかったよというものらしく、1時間か1分か待てば解除されるよということらしい。

一度生成したURLは関数を外して値貼り付けにしちゃうとかの工夫が必要そうです。