Google Spreadsheetでセル内のテキストに含まれるURLを自動でハイパーリンク化するGASの解説
Google スプレッドシートを運用していると、セルの中にテキストと一緒にドメインやURL(https://...)がベタ書きされていて、「クリックしてもリンクとして開けない」「一つひとつ手動でハイパーリンクを設定するのが大変」という状況に直面したことはありませんか?
本記事では、指定した範囲内のセルをスキャンし、URLが含まれている場合に RichTextValue を使って該当のURL部分だけを自動でハイパーリンク化する Google Apps Script(GAS) のコード解説を行います。
どのようなシチュエーションで役に立つか?
このスクリプトは、特に以下のような業務・プロジェクト管理の場面で真価を発揮します。
1. 外部システムやアンケートからの自動転記データの整理
- 問い合わせ・アンケートフォーム: フォームの自由記述欄(「参考URLがあれば記載してください」など)に入力されたURLは、スプレッドシート上ではただの文字列として保存されます。
- Slack / Teams やスクレイピング結果の自動転記: API経由でスプレッドシートに入力された長文テキストに含まれるURLを、まとめてクリック可能な状態に変換できます。
2. 参考資料やドキュメント管理表の整備
- 1つのセル内に「概要説明文 + URL」が混在している場合、関数(
HYPERLINK関数)を使うとセル全体が1つのリンクになってしまうか、数式が複雑になりがちです。 - このGASを使えば、テキスト内のURL文字列部分だけをピンポイントでハイパーリンクにすることができます。
3. URL末尾の不要な記号によるリンク切れ(404エラー)防止
- 日本語の文章中にURLを記述すると、「
https://example.com/。」や「(https://example.com/)」のように、末尾に句読点や閉じ括弧がくっついてしまうことがよくあります。 - 本スクリプトには**「URL末尾の不要な記号を取り除くロジック」**が含まれているため、リンク切れを防いだ正確なハイパーリンクを生成できます。
記述されたコードの全体像
今回解説するコードは、役割ごとに3つの関数に分割されています。
-
hsHyperlinkUrlsInRange_(range): 指定された範囲(Range)をループ処理し、URLが含まれるセルにRichTextを適用する(メイン関数) -
hsBuildRichTextIfUrlFound_(text): セル内の文字列からURLを検索し、RichTextValueオブジェクトを組み立てる -
hsTrimTrailingPunctuation_(url): URLの末尾にくっついた不要な句読点や括弧を除去する(ユーティリティ関数)
Note: 関数名の末尾にあるアンダースコア
_は、GASにおいて「プライベート関数(マクロ一覧や外部からの直接実行を隠蔽する仕様)」を意味します。
詳細なコード解説
1. メイン処理:指定範囲のセルを走査する (hsHyperlinkUrlsInRange_)
/**
* range内の各セルを調べ、URLを含む場合はRichTextValueでリンクを設定する。
* 戻り値は処理したセル数。
*/
function hsHyperlinkUrlsInRange_(range) {
const values = range.getValues();
let count = 0;
for (let r = 0; r < values.length; r++) {
for (let c = 0; c < values[r].length; c++) {
const text = values[r][c];
if (typeof text !== 'string' || text.indexOf('http') === -1) continue;
const richText = hsBuildRichTextIfUrlFound_(text);
if (!richText) continue;
range.getCell(r + 1, c + 1).setRichTextValue(richText);
count++;
}
}
return count;
}
