我正在 Google Web Designer 中为 Google Ads 创建模板广告。问题在于,提要中的价格以如下格式提供价格:
我正在使用 Javascript 来获取这些价格,并对价格和折扣价格进行一些数学计算,以获得折扣百分比。我面临的问题是它只适用于谷歌预览。当广告投放时,价格有时会像这样显示,没有点或任何格式:
我使用的逻辑是:
我觉得谷歌在投放广告之前正在更改提要中的数据。这是完整的代码:
const frames = this.querySelectorAll('.frame')
for (var i = 0; i < frames.length; i++) {
const country = 'UK' //CHANGE COUNTRY HERE, use NA for AU, NL for BE_nl and FR for BE_fr
const value = frames[i].querySelector('[data-gwd-grp-id="value"]')
const price = frames[i].querySelector('[data-gwd-grp-id="price"]')
const salePrice = frames[i].querySelector('[data-gwd-grp-id="sale-price"]')
const description = frames[i].querySelector('[data-gwd-grp-id="description"]')
const cta = frames[i].querySelector('[data-gwd-grp-id="cta"]')
const priceNumber = Number(price.innerHTML.replace(/[^.\d]/g, ''))
const salePriceNumber = Number(salePrice.innerHTML.replace(/[^.\d]/g, ''))
const percentage = Math.floor(100 - ((salePriceNumber * 100) / priceNumber))
const countries = {
NA: {
cta: "See Deal",
value: `${percentage}% OFF`,
price: `$${priceNumber}`,
salePrice: `$${salePriceNumber}`
},
UK: {
cta: "See Deal",
value: `${percentage}% OFF`,
price: `£${priceNumber}`,
salePrice: `£${salePriceNumber}`
},
IE: {
cta: "See Deal",
value: `${percentage}% OFF`,
price: `${priceNumber} €`,
salePrice: `${salePriceNumber} €`
},
AE: {
cta: "See Deal",
value: `${percentage}% OFF`,
price: `AED${priceNumber}`,
salePrice: `AED${salePriceNumber}`
},
NL: {
cta: "Zie deal",
value: `${percentage}% KORTING`,
price: `${priceNumber} €`,
salePrice: `${salePriceNumber} €`
},
FR: {
cta: "Voir l'offre",
value: `${percentage}% Réduction`,
price: `${priceNumber} €`,
salePrice: `${salePriceNumber} €`
},
DE: {
cta: "Siehe Deal",
value: `${percentage}% SPAREN`,
price: `€${priceNumber}`,
salePrice: `€${salePriceNumber}`
},
IT: {
cta: "Scopri",
value: `${percentage}% di sconto`,
price: `${priceNumber} €`,
salePrice: `${salePriceNumber} €`
},
ES: {
cta: "Ver oferta",
value: `${percentage}% dto.`,
price: `${priceNumber} €`,
salePrice: `${salePriceNumber} €`
},
PL: {
cta: "Patrz oferta",
value: `${percentage}% ZNIŻKI`,
price: `${priceNumber} zł`,
salePrice: `${salePriceNumber} zł`
}
}
cta.innerHTML = countries[country].cta
price.innerHTML = countries[country].price
salePrice.innerHTML = countries[country].salePrice
if (percentage > 0 && percentage < 100 && price && salePrice) {
value.innerHTML = countries[country].value
} else {
value.style.display = "none"
}
if (priceNumber === salePriceNumber) price.style.display = "none"
if (price < 0.01) price.style.display = "none"
if (salePriceNumber < 0.01) salePrice.style.display = "none"
if (description.innerHTML === '') description.style.display = "none"
}
使用带有
parseFloat
的正则表达式并去除逗号:
const result = ['1,200.99 USD', '1.200,99 EUR', 'AED 1,200.99'].map(str => parseFloat(str.match(/[\d,.]+/)[0].replace(',','')));
console.log(...result);