[Google広告] サンキューページに合計金額表示なし。でも、コンバージョンでデータを送りたいときはsessionStorageをつかおう


確認ページには金額あるのに、サンキューページには金額がない...。

でも、コンバージョンとして値は送りたい。

そんなあなたはsessionStorageを使いましょう。
(localStorageも使えます。が、sessionをまたいで保持する必要はないので)

・確認ページにて

 // DOM要素なんかから合計金額を取得します。
 let $total = document.querySelector('#hoge');
 let priceStr;
 if($total){
   // DOM要素だったら、innerTextなんかで金額取りましょう。
   priceStr = $total.innerText;
   // "¥6,000"が"6000"に
   priceStr = getPriceWOSymbols(priceStr);
 } else {
   // 値が取得できなければ、1
   priceStr = '1';
 }
// 金額のデータを保存 ("6000")
window.sessionStorage.setItem('price', priceStr);

/** 
* 「¥」と「,」なしの金額を返します
*  WO = without
* @param {string}  priceStr
* @return {string}
*/
const getPriceWOSymbols= (priceStr)=>{
  return priceStr.replace(/[^0-9]/g, '');
};

・サンキュページにて

<!--Global site tag (gtag.js) - Google Ads: XXXXXXXX-->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-766862767"><script/>
<script>
  // Google広告のコード。ファーストパーティクッキーの生成
  // リマーケティングタグとしても機能します。
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'AW-XXXXXXXX');
</script>
<script>
// 保存しておいた金額のデータを取得。 ("6000")
let price = window.sessionStorage.getItem('price');

// sessionStorageにはstringでしか値を入れられないので、numberに直しましょう
// "6000" が 6000に
price = price && !isNaN(price) ? parseFloat(price) : 1;

// コンバージョンデータの送信
gtag('event', 'conversion', {
  'send_to': 'AW-XXXXXXXX/XXXXXXXX',
  'value': price, // ここに確認ページからもってきた値(数字の6000)が入ります!
  'currency': 'JPY',
  'transaction_id': someVariableForId // 省略可
});  
</script>

以上です!