3分でわかる!GASでURLからパラメータを簡単に取得する方法

GASでURLからパラメータをどうやって取得すればいいのかな?先輩に頼まれてしまって…
猫男
猫男
catman
catman
GASを使えば、URLからパラメータを簡単に取得できるように設定できるさ。このcatmanが教えてあげよう。

GASでURLパラメータを取得する基本

URLからパラメータを取得したい場合、GASではまずそのURL全体を適切に解析する必要がある。

URLからクエリパラメータを抜き出す方法

例えば、このようなURLがあったとする:

 const url = "https://example.com/page?param1=value1&param2=value2"; 

次に、特定のパラメータを取得するためのスクリプトがこちら:

 function getQueryParams(url) {
 const params = {};
 const parser = new URL(url);
 const queryString = parser.search.substring(1);
 const pairs = queryString.split("&");
 pairs.forEach(pair => {
 const [key, value] = pair.split("=");
 params[key] = decodeURIComponent(value);
 });
 return params;
 }

const params = getQueryParams(url);
Logger.log(params['param1']); // outputs: value1 

ここで使われているのはURLオブジェクトで、これはURL全体を解析し、個別のパラメータを抜き出すことができる。

[h2]このスクリプトの内訳を見てみよう[/h2]

  • new URL(url) – 渡されたURLを解析するためのオブジェクトを作成する。
  • parser.search – URLの「?」以降のクエリパートを取得する。
  • split(“&”) – それぞれのパラメータを「&」で分割する。
  • decodeURIComponent(value) – URLエンコードされたパラメータの値をデコードする。
なるほど、こうやって分解するとパラメータが取得できるんですね!
猫男
猫男

GASでURLパラメータを扱う応用編

GASでは、さらに高度な用途に合わせてURLパラメータを操作できる。次は、パラメータをマップ形式にして処理する例だ。

パラメータをJSON形式で処理する方法

マップ形式を利用することで、扱いやすいデータフォーマットに変換する:

 function getQueryParamsAsJSON(url) {
 const params = getQueryParams(url);
 return JSON.stringify(params);
}

const json = getQueryParamsAsJSON(url);
Logger.log(json); // outputs: {"param1":"value1","param2":"value2"} 

この例ではJSON.stringifyを使って、オブジェクト形式に変換している。JSON形式にすることで、データを外部とやり取りする際にも便利だ。

JSONにすれば、もっとデータ整理が楽になりますね!
猫男
猫男

練習問題

以下のURLから「user」パラメータを取得し、ログに出力するスクリプトを書いてみましょう。

URL: “https://example.com/data?user=catman&age=5”

解答・解説

 function getUserParam(url) {
 const params = new URL(url).searchParams;
 return params.get('user');
}

const url = "https://example.com/data?user=catman&age=5";
const user = getUserParam(url);
Logger.log(user); // outputs: catman 

new URL(url).searchParams – この方法を使うと、URLからすでにSearchParamsオブジェクトが提供され、簡単にパラメータを操作できる。
params.get(‘user’) – 指定した名前のパラメータの値を取得するメソッド。

catman
catman
上記の方法を入念に学べば、GASで複雑なURL処理もお手の物だ。自信を持って臨むといいさ!