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スプレッドシートで使用できるように設定します。
サイト内の右下にある「開発者向け」ページをクリックします。
ここにAPIキー発行の手続きがあります。
開発者向けページを下にスクロールすると APIキー発行の項目があります。
指示に従ってメールアドレスを送信します。
送信したメールアドレスに、X.gdから確認メールが届きます。
メール内の「アクティベート」ボタンをクリックし、APIキーを有効化します。
「アクティベート」後に表示されるAPIキーをコピーします。
このキーを後の手順でスクリプトプロパティに設定します。
手順
- 1行目にヘッダーを入力します。
-
- A列:元のURL
- B列:短縮URL
- A列に短縮したいURLを入力
-
2行目以降のA列に短縮したいURLを入力します。
- シート名の設定
-
シート名を「短縮URL」とし、GAS実行時に参照します。
Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。
Google Apps Scriptのエディタで、「プロジェクトの設定」を選択します。
「スクリプトプロパティを追加」を選択し、キー名(例: “URL_SHORTENER_API_KEY”)とAPIキーを入力します。
入力したら、「スクリプトプロパティを保存」を押します。
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列に設定されます。
- レスポンスの内容をJSON形式で解析し、短縮URL(
- スクリプトの利点
-
- 一括処理
A列に入力された複数のURLを自動的に短縮するため、手作業を大幅に減らすことができます。 - 重複処理の回避
B列にすでに短縮URLが存在する場合、その行はスキップされるので、無駄なAPIリクエストが発生しません。 - エラー処理
APIリクエストが失敗した場合、エラーメッセージがログに出力されるため、問題の把握が容易です。
- 一括処理
スクリプトを書いたら、名前を付けて保存します。
(例:「短縮URL」)
スクリプトを実行すると、短縮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導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント