スプレッドシートで日本語を含むURLを作りたいのに、貼り付けると文字化けする・リンクが正しく開かない、という経験はありませんか。
URLに日本語や記号が含まれていると、ブラウザが解釈できる「%E3%81%82」のような形式(パーセントエンコーディング)に変換する必要があります。これを手作業でやるのは現実的ではありません。
そんなときに使えるのがENCODEURL関数です。セルの文字列を渡すだけで、自動でURLエンコードしてくれる関数で、検索URLや地図リンクの自動生成にそのまま使えます。
この記事では、ENCODEURL関数の構文から、Google検索・マップ・X(Twitter)共有URLの自動生成、HYPERLINK関数との組み合わせ、ExcelとSheetsで挙動が違う点までまとめて解説します。
スプレッドシートのENCODEURL関数とは?
ENCODEURL関数(読み方: エンコードユーアールエル)は、文字列をURLエンコード(パーセントエンコーディング)する関数です。
名前は「ENCODE(変換する)」+「URL」で、URLに使える形式に文字列を変換するという意味そのままです。
たとえば「東京都」という文字列を渡すと、%E6%9D%B1%E4%BA%AC%E9%83%BD に変換されます。これがパーセントエンコーディング(百分率記号を使った符号化)の結果です。
ENCODEURL関数でできることをまとめると次のとおりです。
- 日本語テキストをURL用の文字列に変換する
- スペース・&・?・# など、URLで意味を持つ記号を自動変換する
- 他の関数と組み合わせて検索URLやAPIリクエストURLを自動生成する
NOTE
ENCODEURL関数はGoogleスプレッドシートで安定して使える関数です。ExcelにもENCODEURL関数はありますが、Windows版限定でMac版Excelでは使用できません。詳しくは後半の「ExcelのENCODEURL関数との違い」セクションで解説しています。
ENCODEURL関数の書き方(構文と引数)
基本構文
=ENCODEURL(テキスト)
カッコの中にエンコードしたい文字列を指定します。引数は1つだけなので、構文としては非常にシンプルです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| テキスト | 必須 | URLエンコードしたい文字列。セル参照または直接入力 |
文字列を直接入力する場合はダブルクォーテーション(")で囲みます。セル参照の場合はそのまま指定できます。
=ENCODEURL("東京都")
=ENCODEURL(A2)
TIP
英数字と一部の記号(ハイフン -、アンダースコア _、ピリオド .、チルダ ~)はエンコードされずそのまま返ります。これは RFC 3986 というURL仕様で「Unreserved Characters(予約されていない文字)」として定義されている4種類です。
ENCODEURL関数の基本的な使い方
日本語テキストをURLエンコードする
まずは基本的な使い方を見てみましょう。A列に日本語テキストを入れ、B列でENCODEURL関数を使います。
| 行 | A列(元テキスト) | B列(数式) | B列(結果) |
|---|---|---|---|
| 2行目 | 東京都 | =ENCODEURL(A2) | %E6%9D%B1%E4%BA%AC%E9%83%BD |
| 3行目 | 渋谷区 | =ENCODEURL(A3) | %E6%B8%8B%E8%B0%B7%E5%8C%BA |
| 4行目 | Hello | =ENCODEURL(A4) | Hello |
| 5行目 | Hello World | =ENCODEURL(A5) | Hello%20World |
「Hello」のように半角英数字だけの場合はそのまま返ります。半角スペースを含む「Hello World」は %20 に変換されます。エンコードが必要な文字だけが変換される仕組みです。
記号・スペースのエンコード
URLでよく使われる記号やスペースがどう変換されるかを一覧で確認しておきましょう。
| 元の文字 | 変換後 | エンコードされる理由 |
|---|---|---|
| 半角スペース | %20 | URLの区切り文字と区別するため |
| & | %26 | クエリパラメータ区切りと区別するため |
| = | %3D | キーと値の区切りと区別するため |
| ? | %3F | クエリ開始文字と区別するため |
| # | %23 | フラグメント(ページ内アンカー)文字と区別するため |
| / | %2F | パス区切りと区別するため |
| + | %2B | 「+」自体が古い仕様でスペースを表すことがあるため |
| @ | %40 | メールアドレス・ユーザー情報の区切りと区別するため |
URLの構造に使われる記号は、パラメータの「値」として渡すときにエンコードする必要があります。ENCODEURL関数はこれらをまとめて自動処理してくれます。
エンコードされる文字と、されない文字を整理する
「結局どの文字がエンコードされて、どの文字がされないのか」は最初によく混乱するポイントです。次のように覚えておくとシンプルです。
- エンコードされない: 半角英数字(A-Z、a-z、0-9)と
- _ . ~の4種類 - エンコードされる: それ以外すべて(日本語・全角文字・記号・スペース)
つまり「URLにそのまま入れて100%安全な文字」だけが残り、それ以外は念のためエンコードされる、という仕様です。安全側に倒した設計と覚えておくと迷いません。
実務で使えるENCODEURL関数の活用例
Google検索URLを自動生成する
セルに入力したキーワードから、Google検索結果ページのURLを自動で作れます。リサーチ業務で複数のキーワードを一括検索したいときに便利です。
A列に検索キーワードを入れ、B列で検索URLを組み立てます。
="https://www.google.com/search?q="&ENCODEURL(A2)
| 行 | A列(キーワード) | B列(生成されたURL) |
|---|---|---|
| 2行目 | スプレッドシート 使い方 | https://www.google.com/search?q=%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88%20%E4%BD%BF%E3%81%84%E6%96%B9 |
生成されたURLをブラウザに貼り付ければ、そのキーワードの検索結果が表示されます。
HYPERLINK関数 と組み合わせれば、セルをクリックするだけで検索結果に飛べるリンクも作れます。
=HYPERLINK("https://www.google.com/search?q="&ENCODEURL(A2), A2&"を検索")
これで「スプレッドシート 使い方を検索」というリンクテキストが表示され、クリックするとGoogle検索が開きます。
Googleマップ検索URLを作成する
住所リストから地図検索リンクを一括で作成できます。営業先リストや店舗一覧の管理で重宝するパターンです。
=HYPERLINK("https://www.google.com/maps/search/"&ENCODEURL(A2), "地図を開く")
A列に住所を入れておけば、「地図を開く」をクリックするだけでGoogleマップが開きます。
ピン位置を厳密に固定したい場合は query パラメータ形式も使えます。
=HYPERLINK("https://www.google.com/maps/search/?api=1&query="&ENCODEURL(A2), "地図を開く")
こちらはGoogleが公式に推奨している Maps URLs API の形式 で、長期的に安定して動作します。
X(旧Twitter)の投稿共有URLを作る
社内ナレッジやキャンペーン情報を、ワンクリックでX投稿画面に飛べる「シェアリンク」として共有できます。
=HYPERLINK("https://twitter.com/intent/tweet?text="&ENCODEURL(A2&" "&B2), "Xで共有")
| 行 | A列(タイトル) | B列(URL) | C列(生成リンク) |
|---|---|---|---|
| 2行目 | 新商品リリースのお知らせ | https://example.com/news/123 | Xで共有 |
C列をクリックすると、本文に「新商品リリースのお知らせ https://example.com/news/123」が入った投稿画面が開きます。社内のSNS担当が複数の投稿候補を一括管理するときに便利です。
LINEで送る・メール本文の共有リンクを作る
同じ要領で、LINEやメールの共有リンクも自動生成できます。
LINE: =HYPERLINK("https://line.me/R/msg/text/?"&ENCODEURL(A2), "LINEで送る")
メール: =HYPERLINK("mailto:?subject="&ENCODEURL(A2)&"&body="&ENCODEURL(B2), "メール作成")
LINEは https://line.me/R/msg/text/? に続けてメッセージ本文をエンコードして渡します。メールは件名と本文をそれぞれエンコードして mailto: リンクに組み込みます。
問い合わせ対応のテンプレ文をシートで管理しておき、案件ごとに必要なメールリンクを生成する、といった運用に展開できます。
HYPERLINK関数と組み合わせてクリック可能なリンクにする
ENCODEURL関数で生成したURLは、そのままではただの文字列です。クリックして開けるリンクにするには HYPERLINK関数 と組み合わせます。
基本の組み合わせパターンはこちらです。
=HYPERLINK("ベースURL"&ENCODEURL(パラメータ), "表示テキスト")
たとえば、商品名からAmazon検索リンクを作る場合は次のように書きます。
=HYPERLINK("https://www.amazon.co.jp/s?k="&ENCODEURL(A2), A2&"を検索")
&(アンパサンド)で文字列を結合しています。文字列結合の数が多くなって読みづらい場合は CONCATENATE関数 を使うと意図が明確になります。
複数パラメータのURLを組み立てる
クエリパラメータが複数あるURLも組み立てられます。各パラメータの「値」だけをENCODEURLでエンコードするのがポイントです。
URLの ?key1=値1&key2=値2 という形式を作るには、次のように書きます。
="https://example.com/api?name="&ENCODEURL(A2)&"&city="&ENCODEURL(B2)
| 行 | A列(名前) | B列(都市) | C列(生成URL) |
|---|---|---|---|
| 2行目 | 田中太郎 | 東京都 | https://example.com/api?name=%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8E&city=%E6%9D%B1%E4%BA%AC%E9%83%BD |
URLの構造部分(https://、?、&、=)はエンコードせず、値の部分だけをENCODEURLで変換します。ここを取り違えると ? まで %3F に変換されてURLが壊れるので注意してください。
LET関数で長いURL式を整理する
組み立てるURLが長くなると、可読性も保守性も一気に落ちます。そんなときは LET関数 を使って中間結果に名前を付けると見通しがよくなります。
=LET(
base, "https://example.com/api",
name, ENCODEURL(A2),
city, ENCODEURL(B2),
base & "?name=" & name & "&city=" & city
)
「ベースURL」「エンコード済みの名前」「エンコード済みの都市」を変数として宣言してから、最後に1行で組み立てる構造です。後から第3パラメータを追加するときも変数宣言を1行足すだけで済みます。
ENCODEURL関数のよくあるエラーと対処法
ENCODEURL関数は引数が1つだけなので構文エラーは少ないですが、運用で詰まりやすいケースをまとめておきます。
| 状況 | 結果 | 対処法 |
|---|---|---|
引数なし =ENCODEURL() | #N/A または数式エラー | テキストまたはセル参照を指定する |
| 空のセルを参照 | 空文字列(空白) | IF関数で空セルチェックを入れる |
| 数値を渡した場合 | 数値がそのまま文字列として返る | 意図どおりならそのままでOK |
| URL全体をまるごとエンコード | https://... の : や / まで変換される | 値の部分だけを対象にする |
| 全角スペース混入 | %E3%80%80 に変換される | SUBSTITUTE関数 で半角に統一してから渡す |
空セルでもURLベースだけ残ってしまうのを防ぐ
空セルを参照したときに「https://www.google.com/search?q=」というURLのベース部分だけ残ってしまうと、押してもエラーページに飛ぶリンクになります。IF関数で分岐させましょう。
=IF(A2="","",HYPERLINK("https://www.google.com/search?q="&ENCODEURL(A2), "検索"))
A2が空なら空白、値があれば検索リンクを表示します。実務ではこの形でテンプレ化しておくのが安全です。
全角スペース・全角記号の混入チェック
ユーザー入力データには「全角スペース」「全角の ? &」が混ざることがあります。これらは見た目こそ似ていても文字コードとしては別物で、%E3%80%80 のような長いエンコード結果になり、検索結果がヒットしないことがあります。
事前に SUBSTITUTE関数 で半角に正規化してから渡すと安定します。
=ENCODEURL(SUBSTITUTE(A2," "," "))
SUBSTITUTE(A2," "," ") で全角スペース(" ")を半角スペース(" ")に置換しています。
セルの中身が「数式扱い」になっていないか確認する
A列に ="123" のような数式が入っていると、見た目は文字列でも参照したときに数値として渡されることがあります。意図しないエンコード結果になるときは、対象セルの中身を CELL関数 で確認すると、データ型まで含めてチェックできます。
=CELL("type",A2)
戻り値が "v" なら数値、"l" なら文字列、"b" なら空白セル、と判定できます。
ExcelのENCODEURL関数との違い
ExcelにもENCODEURL関数がありますが、対応環境に大きな違いがあります。
| 比較項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 対応環境 | すべての環境(PC・スマホ・ブラウザ) | Windows版のみ(Mac版は非対応) |
| Web版 | 対応 | Excel for the web は対応 |
| 構文 | =ENCODEURL(テキスト) | =ENCODEURL(テキスト) |
| エンコード方式 | UTF-8 | UTF-8 |
| 関数カテゴリ | テキスト関数 | Web関数 |
構文とエンコード方式は同じですが、対応環境が大きく違います。Mac環境で作業する方はスプレッドシートのほうが確実に使えます。
ExcelのENCODEURL関数はWindowsのOS機能(URL Monikerと呼ばれるWindows標準のURL処理ライブラリ)に依存しているため、Mac版Excelでは #NAME? または #VALUE! エラーになります。
Mac環境でURLエンコードが必要な場合は、Googleスプレッドシートを使うのがおすすめです。あるいは、Excelで作業せざるを得ない場合は、ChromeでスプレッドシートのENCODEURL関数を呼び出し、結果をコピペで持ち込む運用も現実的です。
ENCODEURL関数のよくある質問(FAQ)
ENCODEURL関数を実務で使うときに、よく聞かれる質問をまとめました。
Q. ENCODEURL関数でデコード(逆変換)はできる?
ENCODEURL関数は「エンコード(変換)」専用の関数なので、%E6%9D%B1... のようなエンコード済み文字列を元の日本語に戻す(デコードする)ことはできません。
スプレッドシートには標準でURLデコード用の関数が用意されていないため、逆変換をしたい場合は次のどちらかを検討してください。
- ブラウザのアドレスバーやオンラインのURLデコードツールに貼り付けて戻す
- Apps Script(GAS)で
decodeURIComponent()を使う自作関数を作る
実務では「元データ(日本語)はA列に残し、B列でENCODEURLしたものを使う」という設計にしておくと、そもそもデコードが不要になります。元テキストを捨てずに保持しておくのが安全です。
Q. IMPORTDATA関数やIMPORTXML関数とENCODEURL関数を組み合わせて使える?
はい、相性が非常に良い組み合わせです。外部サイトからデータを取得する IMPORTDATA関数 や IMPORTXML関数 は、引数にURLを渡します。このURLに日本語の検索ワードを含めたいとき、ENCODEURLでエンコードした文字列を組み込みます。
たとえば、検索キーワードを動的に変えてデータを取り込む場合は次のように書けます。
=IMPORTXML("https://example.com/search?q="&ENCODEURL(A2), "//div[@class='result']")
A2のキーワードを変えるだけで、取り込むデータが切り替わる仕組みです。日本語を直接URLに埋め込むと取得に失敗することがあるので、ENCODEURLでエンコードしてから渡すのが定番のパターンです。
ただしIMPORT系関数は対象サイトの仕様変更に弱いので、取得できなくなったらまずURLが正しくエンコードされているかを確認するとよいでしょう。
Q. スマートフォンのスプレッドシートアプリでもENCODEURL関数は使える?
はい、使えます。ENCODEURL関数はGoogleスプレッドシートの標準関数なので、iPhone・AndroidのGoogleスプレッドシートアプリでも、PCで作った数式がそのまま動作します。
PCで =HYPERLINK(...&ENCODEURL(A2),...) の形でリンクを仕込んでおけば、スマホ側ではセルをタップするだけで検索やマップが開きます。外出先で営業リストの住所から地図を開く、といった使い方にも向いています。
これはMac版Excelでは使えないENCODEURL関数との大きな違いです。マルチデバイスで安定して使える点はスプレッドシートの強みといえます。
Q. 日本語URLをENCODEURLで変換したら長くなりすぎた。短縮できる?
ENCODEURL関数自体には、URLを短くする機能はありません。日本語1文字はUTF-8で %XX%XX%XX のように3つの組(9文字分)に展開されるため、エンコード後の文字列が元の数倍に膨らむのは仕様どおりの動作です。
URLを短くしたい場合は、エンコードとは別の対策が必要です。
- 短縮URLサービス(Bitlyなど)に生成後のURLを通す
- そもそもクエリに渡す日本語の文字数を減らす(必要なキーワードだけに絞る)
- 表示上だけ短く見せたいなら HYPERLINK関数 の第2引数で「検索」など短いリンクテキストを付ける
セル上の見た目が気になるだけであれば、HYPERLINK関数でリンクテキストを設定するのが一番手軽です。URL本体が長くても、表示は「検索」「地図を開く」のように短く保てます。
まとめ
スプレッドシートのENCODEURL関数について、基本構文から実務での活用パターンまで紹介しました。
ポイントをおさらいしておきましょう。
- ENCODEURL関数は文字列をURLエンコード(パーセントエンコーディング)する関数
- 引数は1つだけ。エンコードしたい文字列を指定するだけのシンプル構文
- 英数字と
- _ . ~の4種類はそのまま、日本語・全角文字・記号は%XX形式に変換される - HYPERLINK関数と組み合わせるとクリック可能な検索・マップ・SNS共有リンクを自動生成できる
- 複数パラメータURLは「値の部分だけ」をENCODEURLで囲むのがコツ
- LET関数で中間変数に名前を付けると長いURL式の保守性が大幅に上がる
- Mac版Excelでは使えないが、Googleスプレッドシートならどの環境でも安定動作する
日本語を含むURLを扱う場面は、リサーチ業務・営業リスト管理・社内SNS共有など意外と多いものです。ENCODEURL関数を覚えておくと、URL生成にかかる手作業を大幅に減らせます。
