Webサイト内の文言を変更する必要がある際に、どれくらい使われているのかを確認したい場合があると思います。
Webサイトの特定キーワードの出現回数を調べたいとき、1ページずつ開いて検索するのは非効率です。
そこで、スプレッドシート上でURLと単語を指定するだけで、自動でカウントしてくれるカスタム関数を作りました。
実装コード
/**
* 指定したURLからキーワードをカウントする
* @customfunction
*/
function COUNT_WORD(url, ...words) {
if (!url || !words.length) return "";
try {
// URLの情報を1回だけ取得(通信の最適化)
const res = UrlFetchApp.fetch(url, { "muteHttpExceptions": true });
if (res.getResponseCode() !== 200) return "Error:" + res.getResponseCode();
const html = res.getContentText();
// 各ワードをループで回してカウント
const results = words.map(word => {
if (!word) return 0;
// 記号が含まれても正規表現が壊れないようエスケープ
const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
return (html.match(new RegExp(escaped, 'g')) || []).length;
});
return [results]; // 横方向に展開
} catch (e) {
return "Error";
}
}
処理のポイント
UrlFetchApp.fetch を関数の冒頭で1回だけ実行するようにしています。キーワードを複数指定しても、サイトへのアクセスは1回で済むため、処理が速くサーバーへの負荷も抑えられます。
設定手順
STEP 1: スクリプトエディタを開く
調査したいスプレッドシートを開き、メニューバーから操作します。
- 「拡張機能」をクリック
- 「Apps Script」を選択
別タブでスクリプトの編集画面が立ち上がります。

STEP 2: コードを貼り付けて保存
- 既存の
myFunction()をすべて消去し、用意したコードを貼り付けます。 - 貼り付け後、上部の「フロッピーアイコン(保存)」をクリックし、プロジェクト名を付けて保存します。

STEP 3: 関数の実行と承認
- セルに式を入力すると、初回のみ「承認が必要です」というポップアップが出ます。
- アカウントを選択
安全ではない~と表示されますが「詳細」をクリック「(安全ではないページ)に移動」をクリック - 「許可」を選択
使用例
=COUNT_WORD("https://google.com", "Google", "gmail","AI")

このように入力するだけで、1度のアクセスで複数の単語数を取得できます。右隣のセルへ自動展開されるのが非常に便利です。
運用上の注意(重要)
便利ですが、以下の制限とマナーには注意が必要です。
サーバー負荷を避ける
一度に数百、数千行のセルで実行すると、相手サーバーに短時間で大量アクセスすることになり、攻撃とみなされる恐れがあります。数十件ずつ小分けに実行するのが安全です。
Googleの制限
GASには1日あたりの通信回数制限があります。制限を超えると関数が動かなくなるため、計算が終わったセルは 「コピー > 値として貼り付け」 で確定させておくのが鉄則です。
URLを取得する UrlFetch は、一般アカウントで1日20,000回までです。
静的コンテンツ専用
JavaScriptで描画されるサイト(一部のSPAなど)は正しくカウントできない場合があります。
まとめ
GASを使うことによって、スプレッドシートに便利な関数を追加できるため、作業の効率化につながります。ぜひ活用していきましょう。




