GoogleスプレッドシートとGASでまとめて短縮URLを作成する方法

前回の記事(Chrome拡張機能で短縮URLをワンクリック作成&コピー)では、Chrome拡張機能を使った短縮URLの作成方法をご紹介しましたが、これはURLを一つずつ変換するのに向いています。

URLをたくさん短縮したい場合はGASを使うと便利です。

そこで今回は、GoogleスプレッドシートとGoogle Apps Script(GAS)を使って、大量のURLをまとめて短縮URLに変換する方法をご紹介します。

短縮URLの作成とともにスプレッドシート上で一括管理できるため、効率的に業務を進められます。

目次

完成イメージ

  • GASとX.gd API を使用
  • A列に短縮したい元のURLを入力
  • B列にはGASで生成された短縮URLが表示


A列に入力した元のURLから短縮URLをまとめて作成します。

B列にすでに短縮URLがある場合はスキップし、まだ短縮されていないURLだけが処理するGASとなっています。

これにより、無駄な処理を省きながら効率的にURLを作成できます。

必要な準備

大量のURLを一括で短縮するために、X.gdのAPIキーを取得します。

以下の手順でAPIキーを取得し、Googleスプレッドシートで使用できるように設定します。

STEP
X.gdのサイトにアクセス

X.gdの公式サイトにアクセスします。

STEP
「開発者向け」のページをクリック

サイト内の右下にある「開発者向け」ページをクリックします。

ここにAPIキー発行の手続きがあります。

STEP
メールアドレスを送信してAPIキーを申請

開発者向けページを下にスクロールすると APIキー発行の項目があります。

指示に従ってメールアドレスを送信します。

STEP
アクティベート(有効化)する

送信したメールアドレスに、X.gdから確認メールが届きます。

メール内の「アクティベート」ボタンをクリックし、APIキーを有効化します。

STEP
APIキーをコピー

「アクティベート」後に表示されるAPIキーをコピーします。

このキーを後の手順でスクリプトプロパティに設定します。

手順

STEP
スプレッドシートを準備
1行目にヘッダーを入力します。
  • A列元のURL
  • B列短縮URL
A列に短縮したいURLを入力

2行目以降のA列に短縮したいURLを入力します。

シート名の設定

シート名を「短縮URL」とし、GAS実行時に参照します。

STEP
GASエディタを開く
画像に alt 属性が指定されていません。ファイル名: GAS.png

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプトプロパティにAPIキーを設定する

Google Apps Scriptのエディタで、「プロジェクトの設定」を選択します。

スクリプトプロパティを追加」を選択し、キー名(例: “URL_SHORTENER_API_KEY”)とAPIキーを入力します。

入力したら、「スクリプトプロパティを保存」を押します。

STEP
GASスクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function shortenUrls() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("短縮URL"); // シート名を指定
    if (!sheet) {
        Logger.log("指定されたシートが見つかりません");
        return;
    }
    
    var apiKey = PropertiesService.getScriptProperties().getProperty('URL_SHORTENER_API_KEY'); // スクリプトプロパティからAPIキーを取得
    if (!apiKey) {
        Logger.log("APIキーが設定されていません");
        return;
    }
    
    var lastRow = sheet.getLastRow();
    for (var i = 2; i <= lastRow; i++) {
        var longUrl = sheet.getRange(i, 1).getValue(); // A列に元のURLがあると仮定
        var existingShortUrl = sheet.getRange(i, 2).getValue(); // B列に既に短縮URLがあるか確認
        
        // B列が空で、A列にURLがある場合のみ短縮URLを生成
        if (longUrl && !existingShortUrl) {
            var shortUrl = shortenUrlWithXgd(longUrl, apiKey);
            sheet.getRange(i, 2).setValue(shortUrl); // B列に短縮URLを表示
        }
    }
}

function shortenUrlWithXgd(longUrl, apiKey) {
    var url = "https://xgd.io/V1/shorten?url=" + encodeURIComponent(longUrl) + "&key=" + encodeURIComponent(apiKey);

    var options = {
        method: "GET",
        muteHttpExceptions: true
    };
    
    var response = UrlFetchApp.fetch(url, options);
    
    if (response.getResponseCode() !== 200) {
        Logger.log("Error: " + response.getContentText());
        throw new Error("Failed to shorten URL. Status code: " + response.getResponseCode());
    }
    
    var data = JSON.parse(response.getContentText());
    Logger.log("Shortened URL: " + data.shorturl); // 短縮URLをログに出力
    return data.shorturl; // 短縮URLを返します
}
スクリプトの説明
shortenUrls 関数

スプレッドシートのA列にあるURLを取得し、B列に短縮URLを出力するメインの処理です。

シートの取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("短縮URL"); // シート名を指定
    if (!sheet) {
        Logger.log("指定されたシートが見つかりません");
        return;
    }
  • スプレッドシートの「短縮URL」というシートを取得します。
  • 必要に応じてシート名をご変更ください。
  • ただし、シート名が間違っているとスクリプトが動作しないので注意。
APIキーの取得
    var apiKey = PropertiesService.getScriptProperties().getProperty('URL_SHORTENER_API_KEY'); // スクリプトプロパティからAPIキーを取得
    if (!apiKey) {
        Logger.log("APIキーが設定されていません");
        return;
    }
  • スクリプトプロパティに保存されたAPIキーを取得します。
  • APIキーが設定されていない場合、エラーメッセージを出力してスクリプトを終了します。
URLの一括処理
    var lastRow = sheet.getLastRow();
    for (var i = 2; i <= lastRow; i++) {
        var longUrl = sheet.getRange(i, 1).getValue(); // A列に元のURLがあると仮定
        var existingShortUrl = sheet.getRange(i, 2).getValue(); // B列に既に短縮URLがあるか確認
        
        // B列が空で、A列にURLがある場合のみ短縮URLを生成
        if (longUrl && !existingShortUrl) {
            var shortUrl = shortenUrlWithXgd(longUrl, apiKey);
            sheet.getRange(i, 2).setValue(shortUrl); // B列に短縮URLを表示
        }
    }
}
  • for (var i = 2; i <= lastRow; i++) { ... } で2行目から最終行までの各行をループ処理します。
  • A列のURL(longUrl)を取得し、B列に既に短縮URL(existingShortUrl)があるかどうかを確認します。
  • URLがあり、B列が空であれば短縮URLを生成します。
shortenUrlWithXgd 関数

X.gdのAPIを使って実際にURLを短縮する処理を行います。

APIリクエストの準備
var url = "https://xgd.io/V1/shorten?url=" + encodeURIComponent(longUrl) + "&key=" + encodeURIComponent(apiKey);
  • var url = "https://xgd.io/V1/shorten?url=" + encodeURIComponent(longUrl) + "&key=" + encodeURIComponent(apiKey); でX.gd APIのエンドポイントを指定し、長いURLとAPIキーをリクエストに追加します。
  • encodeURIComponent()でURLとAPIキーをエンコードすることで、安全にリクエストを送ることができます。
リクエストの送信
    var options = {
        method: "GET",
        muteHttpExceptions: true
    };
    
    var response = UrlFetchApp.fetch(url, options);
  • UrlFetchApp.fetch(url, options); でGETリクエストを送信します。
  • muteHttpExceptions: true オプションでエラーの詳細を取得可能にします。
エラーチェック
    if (response.getResponseCode() !== 200) {
        Logger.log("Error: " + response.getContentText());
        throw new Error("Failed to shorten URL. Status code: " + response.getResponseCode());
    }
  • response.getResponseCode() !== 200 でリクエストのステータスコードをチェックし、200でなければエラーメッセージをログに出力します。
短縮URLの取得と返却
    var data = JSON.parse(response.getContentText());
    Logger.log("Shortened URL: " + data.shorturl); // 短縮URLをログに出力
    return data.shorturl; // 短縮URLを返します
}
  • レスポンスの内容をJSON形式で解析し、短縮URL(data.shorturl)を取得して返します。
  • これがB列に設定されます。
スクリプトの利点
  • 一括処理
    A列に入力された複数のURLを自動的に短縮するため、手作業を大幅に減らすことができます。
  • 重複処理の回避
    B列にすでに短縮URLが存在する場合、その行はスキップされるので、無駄なAPIリクエストが発生しません。
  • エラー処理
    APIリクエストが失敗した場合、エラーメッセージがログに出力されるため、問題の把握が容易です。
STEP
スクリプトを保存

スクリプトを書いたら、名前を付けて保存します。

(例:「短縮URL」)

STEP
スクリプトを実行

スクリプトを実行すると、短縮URLが生成されます。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
B列に短縮URLが生成

A列に入力されたURLをもとに、B列に短縮URLが生成されます。

短縮URLの上書きを防ぐため、B列にすでに生成された短縮URLがある場合はスキップし、まだ短縮されていないURLだけを生成します。

まとめ

  • URLを一つずつ短縮したい場合はChrome拡張機能が便利
  • 大量のURLをまとめて短縮したい場合はGASが便利

今回は、GoogleスプレッドシートとGoogle Apps Script(GAS)を使って、大量のURLを一括で短縮する方法をご紹介しました。

URLを一つずつ短縮したい場合はChrome拡張機能を使うと便利ですが、大量のURLを短縮する場合はGASを使うことでまとめて生成できるため便利です。

業務の効率化のお役に立てれば幸いです。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次