Ce este acest script?
Acest script generează automat linkuri directe (deeplinks) către secțiuni esențiale din interfața Google Ads și ți le trimite prin email, organizate frumos pe campanii și tipuri de acțiuni.
Este un instrument extrem de util pentru audituri rapide, navigare eficientă și analiză zilnică.
Funcționalități cheie:
1. Linkuri la nivel de cont
-
All Campaigns – Vizualizare generală a tuturor campaniilor
-
Auction Insights (Cont) – Compară performanța față de competitori
-
Scripts – Acces rapid la secțiunea de scripturi
-
Ad Assets – Biblioteca de extensii și asset-uri
-
Recommendations – Sugestii de îmbunătățire din cont
-
Solutions Manager – Acces la soluții salvate (ex: șabloane, automatizări)
2. Linkuri la nivel de campanie (pentru campaniile cu cost > 0)
Pentru fiecare campanie, scriptul creează:
-
🔘 Link către campanie
https://ads.google.com/aw/campaigns?... -
🔘 Link către Ads
https://ads.google.com/aw/ads?campaignId=... -
🔘 Link către Auction Insights
https://ads.google.com/aw/insights/auctioninsights?campaignId=... -
🔘 Link către Search Terms (✅ doar pentru campaniile de tip Search)
https://ads.google.com/aw/keywords/searchterms?campaignId=...
Cum funcționează?
-
Identifică OCID-ul contului – un cod intern necesar pentru a construi linkurile.
-
Citește campaniile active + costul lor pe ultimele 30 zile.
-
Construiește linkuri directe către interfața Ads, atât la nivel de cont, cât și campanie.
-
✅ Trimite un email cu toate aceste linkuri, sortate după cheltuieli (descrescător).
📦 Ce primești concret prin email?
Un mesaj organizat în 3 secțiuni:
-
🔧 Account-level links
-
📈 Campaign deeplinks cu nume, tip, cost și acțiuni rapide
-
🧠 Extras (ex: search terms pentru Search, Ads pentru toate)
Exemplu:
const EMAIL = "contact@encorem.ro"; // destinatarul emailului
function main() {
const ocid = getAccountOcid();
if (!ocid) return;
const campaignData = getCampaignData(30);
let html = "🔗 Google Ads Deeplinks – " + AdsApp.currentAccount().getName() + "
";
html += "⚙️ Account-level Links
";
html += `- All Campaigns
`;
html += `- Account Auction Insights
`;
html += `- Scripts
`;
html += `- Ad Assets
`;
html += `- Recommendations
`;
html += `- Solutions Manager
`;
html += "
";
let campaignLinks = [];
for (const [id, info] of Object.entries(campaignData)) {
if (parseFloat(info.cost) > 0) {
const name = info.name;
const type = info.type;
const cost = info.cost;
const baseCampaignLink = `https://ads.google.com/aw/campaigns?ocid=${ocid}&campaignId=${id}`;
const adsLink = `https://ads.google.com/aw/ads?campaignId=${id}&ocid=${ocid}`;
const auctionLink = `https://ads.google.com/aw/insights/auctioninsights?campaignId=${id}&ocid=${ocid}&ascid=${ocid}`;
const searchTermsLink = type === "Search"
? `https://ads.google.com/aw/keywords/searchterms?campaignId=${id}&ocid=${ocid}`
: null;
campaignLinks.push({
name,
type,
cost,
campaignLink: baseCampaignLink,
auctionLink,
adsLink,
searchTermsLink
});
}
}
campaignLinks.sort((a, b) => parseFloat(b.cost) - parseFloat(a.cost));
html += "📈 Campaign Deeplinks
";
campaignLinks.forEach(c => {
html += `📌 ${c.name} (${c.type}) – $${c.cost}
`;
html += `- Campaign
`;
html += `- Ads
`;
if (c.searchTermsLink) html += `- Search Terms
`;
html += `- Auction Insights
`;
html += `
`;
});
html += `
Generated with ✨ ChatGPT · OCID: ${ocid}`;
MailApp.sendEmail({
to: EMAIL,
subject: "📬 Google Ads Deeplinks – " + AdsApp.currentAccount().getName(),
htmlBody: html
});
Logger.log("📧 Email trimis către: " + EMAIL);
}
function getCampaignData(days) {
const campaignData = {};
const today = new Date();
const startDate = new Date(today);
startDate.setDate(today.getDate() - days);
const startDateStr = formatDate(startDate);
const endDateStr = formatDate(today);
const metadataQuery = `SELECT campaign.id, campaign.name, campaign.advertising_channel_type FROM campaign`;
const metadataReport = AdsApp.report(metadataQuery);
const metadataRows = metadataReport.rows();
while (metadataRows.hasNext()) {
const row = metadataRows.next();
const id = row['campaign.id'];
const name = row['campaign.name'];
const channelType = row['campaign.advertising_channel_type'];
let type = channelType;
if (channelType === "PERFORMANCE_MAX") type = "Performance Max";
else if (channelType === "SEARCH") type = "Search";
else if (channelType === "SHOPPING") type = "Shopping";
else if (channelType === "DISPLAY") type = "Display";
else if (channelType === "VIDEO") type = "Video";
campaignData[id] = { name, type, cost: "0.00" };
}
const costQuery = `SELECT campaign.id, metrics.cost_micros
FROM campaign
WHERE segments.date BETWEEN '${startDateStr}' AND '${endDateStr}'`;
const costReport = AdsApp.report(costQuery);
const costRows = costReport.rows();
while (costRows.hasNext()) {
const row = costRows.next();
const id = row['campaign.id'];
const costMicros = parseFloat(row['metrics.cost_micros'] || 0);
const cost = (costMicros / 1000000).toFixed(2);
if (campaignData[id]) {
const currentCost = parseFloat(campaignData[id].cost || 0);
campaignData[id].cost = (currentCost + parseFloat(cost)).toFixed(2);
}
}
return campaignData;
}
function getAccountOcid() {
const query = "SELECT metrics.optimization_score_url FROM customer";
const report = AdsApp.report(query);
const rows = report.rows();
if (rows.hasNext()) {
const url = rows.next()['metrics.optimization_score_url'];
const match = url.match(/ocid=([^&]+)/);
if (match && match[1]) return match[1];
}
Logger.log("❌ OCID not found");
return null;
}
function formatDate(date) {
const y = date.getFullYear();
const m = String(date.getMonth() + 1).padStart(2, '0');
const d = String(date.getDate()).padStart(2, '0');
return `${y}-${m}-${d}`;
}
Cum să Implementezi Scriptul
- Navighează la interfața Google Ads.
- Mergi la “Instrumente și Setări” (pictograma cheii) în colțul din dreapta sus.
- Sub “Acțiuni în masă”, selectează “Scripturi”.
- Click pe butonul albastru plus pentru a crea un nou script.
- Copiază și lipeste scriptul furnizat în editor.
- Autorizează scriptul să acceseze contul tău Google Ads urmând instrucțiunile.
- Salvează și previzualizează scriptul pentru a te asigura că rulează corect.
- Programează scriptul să ruleze zilnic pentru a menține actualizați parametrii personalizați.
Script dezvoltat de Encorem.ro

