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

decodeURIComponentdecodeURI違いは以下に記載されています。


作成したスクリプト

以下、作成したスクリプトになります。

  // 列、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 の記載が異なったため実施しています。
以上です。

コメント