URLには日本語を含むことがあり、通常はエンコードされてしまうため、そのままでは人間には判読できません。Google Apps Script (GAS) でデコード関数を自作すれば、簡単にエンコードされた日本語部分をデコードすることができます。本記事では、具体的な方法を解説します。
デコード(decode)の意味
デコード(decode)とは、エンコードされたデータを元の形式に復元するプロセスを指します。エンコードとは、データを特定の形式に変換して通信や保存が容易になるようにする方法で、逆にデコードはその変換を解いて元の形式に戻す作業です。例えば、URLエンコードでは日本語などの文字をパーセントエンコーディングに変換しますが、デコードによって再び読みやすい日本語に戻すことができます 。
デコードの主な用途
- データ通信: データをエンコードして送信し、受信側でデコードすることで、データの整合性を保ちながら通信を行います。
- ファイル圧縮: 圧縮されたファイルを解凍することで元のファイルに戻します。
- マルチメディア: 音声や動画のデータを再生可能な形式にデコードします。
デコードの具体例
- URLデコード:
%E3%83%86%E3%82%B9%E3%83%88
という文字列をテスト
に変換する。 - Base64デコード:
SGVsbG8gd29ybGQ=
という文字列をHello world
に変換する。
デコードは、データを適切に利用するために欠かせないプロセスであり、エンコードと共に情報処理や通信において重要な役割を果たしています 。
Google Apps Script (GAS) は、Google スプレッドシートや Google ドライブといった Google サービスを自動化するためのスクリプト言語です。JavaScriptをベースとしているため、初心者でも比較的簡単に扱うことができます。
エンコードとデコードの基本
エンコードとは、URLに日本語などの特殊文字を含める際に使用される方法で、特定の文字をパーセント記号 (%) とその後に続く16進数の数値で表現します。これにより、ブラウザやサーバーが正しく処理できるようになります。しかし、エンコードされたままでは人間には判読できないため、デコードが必要です。
encodeの関数はあるのにdecodeの関数が存在しない理由は?エンコード例
エンコード前: https://example.com/search?query=味噌汁
エンコード後: https://example.com/search?query=%E5%91%B3%E5%99%8C%E6%B1%81
GASでのデコード方法
スクリプトの作成
まず、Google スプレッドシートを開き、「拡張機能」→「Apps Script」を選択します。以下のコードをスクリプトエディタに貼り付け、保存します。
javascript
function decodeURL(url) {
return decodeURIComponent(url);
}
この関数は、URLを引数として受け取り、デコードされた文字列を返します。JavaScriptの decodeURIComponent
関数を利用しています。
関数の利用方法
スプレッドシート上で以下のようにカスタム関数を使用します。
- URLをセルに入力します。例えば、セル A1 にエンコードされたURLを入力します。
perl
https://example.com/search?query=%E5%91%B3%E5%99%8C%E6%B1%81
- 別のセルに以下のカスタム関数を入力します。
scss
=decodeURL(A1)
これで、A1セルに入力されたURLのデコードされた結果が表示されます。
応用例
この方法を使えば、スプレッドシート内で大量のURLを一度にデコードすることが可能です。また、スクリプトを改良して、特定のパターンに基づくデコードや、エンコードされた特定のパラメータのみを抽出することもできます。
例えば、特定のクエリパラメータのみをデコードする関数は以下のようになります。
javascript
function decodeQueryParameter(url, parameterName) {
var urlParams = new URLSearchParams(url.split('?')[1]);
return decodeURIComponent(urlParams.get(parameterName));
}
この関数を使って、指定したクエリパラメータをデコードすることができます。
まとめ
GASを使えば、エンコードされた日本語URLを簡単にデコードできます。デコード関数を使うことで、スプレッドシート上での作業効率を大幅に向上させることができます。今回紹介した方法を活用して、日常の業務を効率化してみてください。
コメント