Google Apps Script で URL をデコードする必要があり、デコードの方法を調べてみました。
結果を以下に記載します。
何故 URL のデコードをしたかったのか?
Google Data Studio で データの統合機能で、混合データというデータソースが作成できるようになりました。
これで、Google Search Console のデータと、Google Analytics のデータをスプレッドシート 上で結合する必要なく、Google Data Studio 上で結合できるようになったのですが、URL に全角が含まれると、Google Search Console では エンコードされたデータが取得され、Google Analytcis では、エンコードされない通常の文字列で取得され、結合する際に違う文字列と判断されて結合できなかったため、Google Search Console の データをスプレッドシート に エクスポートし、URL デコードしてから Google Analytics のデータと結合しようと思ったためです。
データの統合機能の説明は以下の記事がわかりやすかったです。
Google Apps Script の デコード関数について
Google Apps Scirpt 特有のデコード用の Function が存在するわけではなく、JavaScript としてのデコード関数を使います。
JavaScript の デコード用の Function としては以下があり、今回は、decodeURI()
を使用しました。
* decodeURI() - JavaScript | MDN
* decodeURIComponent() - JavaScript | MDN
decodeURIComponent
、decodeURI
の違いは以下に記載されています。
作成したスクリプト
以下、作成したスクリプトになります。
// 列、page を取得
var pages = convertedReport.getRange(2, 3, convertedReport.getLastRow() - 1).getValues();
var convertPages = new Array();
for (var i = 0; i < pages.length; i++) {
// デコードして、ドメイン文字列を削除した結果を配列に設定
convertPages.push([decodeURI(pages[i]).replace("https://www.monotalk.xyz","")]);
}
// 変換した結果を再設定
convertedReport.getRange(2, 3, convertedReport.getLastRow() - 1).setValues(convertPages);
ドメイン文字列を削除していますが、これもGoogle Search Console と、Goolge Anlaytics のページURL の記載が異なったため実施しています。
以上です。
コメント