Google Tag Manager でカスタムHTMLを作成していたとき、次のようなエラーに遭遇
JavaScript Compiler Error Typeform Tag Error at line 3, character 5: This language feature is only supported for ECMASCRIPT6 mode or better: const declaration.
同様に、line4, 5, 6, 7, 11, 22 行目もエラーがあるらしい
書いていたコードは以下
<script>
function formatDate(dt) {
const y = ('00'+ dt.getFullYear()).slice(-2);
const m = ('00' + (dt.getMonth()+1)).slice(-2);
const d = ('00' + dt.getDate()).slice(-2);
const h = ('00' + dt.getHours()).slice(-2);
const mm = ('00' + dt.getMinutes()).slice(-2);
return (y + m + d + h + mm);
}
nowDate = formatDate(new Date());
const getAfbItem = `${nowDate}`;
if (!window.dtlpcvCvConf) {
window.dtlpcvCvConf = [];
}
window.dtlpcvCvConf.push({
siteId: "",
commitData: {
pid: "",
amount: "",
mid: "",
u: `${getAfbItem}`,
t:"",
cvinfo:"1.1.1"
}
});
</script>
どうやらGTMはES6に対応していないとのこと :(
解決方法
以下の記事を参考に書き直しました
JavaScript ES5以前とES6(ES2015)以降の違いについて
- 変数の宣言
const
は対応していない - テンプレートリテラルもES6から対応
-
${<variable>}
も<variable>
のみで良い
書き直したコード↓
<script>
function formatDate(dt) {
var y = ('00'+ dt.getFullYear()).slice(-2);
var m = ('00' + (dt.getMonth()+1)).slice(-2);
var d = ('00' + dt.getDate()).slice(-2);
var h = ('00' + dt.getHours()).slice(-2);
var mm = ('00' + dt.getMinutes()).slice(-2);
return (y + m + d + h + mm);
}
nowDate = formatDate(new Date());
var getAfbItem = nowDate;
if (!window.dtlpcvCvConf) {
window.dtlpcvCvConf = [];
}
window.dtlpcvCvConf.push({
siteId: "",
commitData: {
pid: "",
amount: "",
mid: "",
u: "getAfbItem",
t:"",
cvinfo:"1.1.1"
}
});
</script>
これでエラーは無くなりました