Google Ads Scripts

Raport de performanță automatizat

Cum funcționează?

Acest script automatizează generarea unui raport detaliat al costurilor campaniilor active din Google Ads. Include bugetul, costurile, conversiile, cost/conversie și rata de conversie pentru fiecare campanie activă. Datele sunt extrase automat și trimise prin email într-un tabel formatat profesional.

Caracteristici Cheie

Actualizare automată a perioadei de raportare

• Scriptul identifică automat începutul lunii curente (01/MM/YYYY) și data curentă.

• Nu necesită modificare manuală a datei lunare.

Include metrice esențiale pentru fiecare campanie activă

• Cost total (RON)

• Buget alocat per campanie (RON)

• Numărul total de conversii

• Cost/conversie (RON)

Rată de conversie (%)

Raport formatat într-un tabel HTML profesional

• Datele sunt trimise prin email într-un tabel organizat și ușor de citit.

• Se afișează totalurile pentru costuri, buget și performanța conversiilor.

Filtrare avansată a campaniilor active

• Scriptul selectează doar campaniile active (ENABLED), evitând erorile din campaniile inactive sau oprite.

Automatizare completă

• Poate fi programat să ruleze zilnic, săptămânal sau lunar.

• Funcționează direct din Google Ads Scripts, fără nevoie de aplicații externe.

⚙️ Cum funcționează tehnic scriptul?

1️⃣ Identifică perioada de raportare automat

‣ Determină prima zi a lunii curente (YYYY-MM-01).

‣ Preia data curentă (YYYY-MM-DD).

2️⃣ Rulează un Query GAQL pentru a extrage datele

‣ Selectează doar campaniile active (ENABLED).

‣ Extrage costurile, bugetele, conversiile și rata de conversie.

3️⃣ Procesează datele și calculează metricele cheie

‣ Cost total și buget total

‣ Cost/conversie și rata de conversie (%)

4️⃣ Generează un tabel HTML formatat

‣ Organizează datele campaniilor într-un tabel clar și ușor de citit.

5️⃣ Trimite raportul prin email

‣ Expeditor: contact@encorem.ro

‣ Destinatar: Configurat automat în RECIPIENT_EMAIL.

Image tabel HTML:

script google ads

Script Google Ads:

				
					const RECIPIENT_EMAIL = "contact@encorem.ro";

function main() {
  const startDate = getFirstDayOfCurrentMonth(); // Data de început - 01 a lunii curente
  const endDate = getCurrentDate(); // Data curentă
  const activeCampaignData = calculateActiveCampaignData(startDate, endDate);

  if (activeCampaignData.length > 0) {
    sendFormattedEmail(RECIPIENT_EMAIL, activeCampaignData, startDate, endDate);
  } else {
    Logger.log("Nu s-au înregistrat costuri pentru campaniile active în perioada selectată.");
  }
}

// Funcție pentru a obține începutul lunii curente (01/MM/YYYY)
function getFirstDayOfCurrentMonth() {
  const today = new Date();
  const year = today.getFullYear();
  const month = String(today.getMonth() + 1).padStart(2, "0");
  return `${year}-${month}-01`;
}

// Funcție pentru a obține data curentă în format YYYY-MM-DD
function getCurrentDate() {
  const today = new Date();
  const year = today.getFullYear();
  const month = String(today.getMonth() + 1).padStart(2, "0");
  const day = String(today.getDate()).padStart(2, "0");
  return `${year}-${month}-${day}`;
}

// Funcție pentru calcularea datelor per campanie activă
function calculateActiveCampaignData(startDate, endDate) {
  const query = `
    SELECT
      campaign.name,
      campaign.status,
      metrics.cost_micros,
      campaign_budget.amount_micros,
      metrics.conversions,
      metrics.conversions_value
    FROM
      campaign
    WHERE
      segments.date BETWEEN '${startDate}' AND '${endDate}'
      AND campaign.status = 'ENABLED'
  `;

  const report = AdsApp.report(query);
  const rows = report.rows();

  const campaignData = [];
  while (rows.hasNext()) {
    const row = rows.next();
    const campaignName = row["campaign.name"];
    const costMicros = parseFloat(row["metrics.cost_micros"]);
    const budgetMicros = parseFloat(row["campaign_budget.amount_micros"]);
    const conversions = parseFloat(row["metrics.conversions"]) || 0;
    const conversionValue = parseFloat(row["metrics.conversions_value"]) || 0;

    const cost = costMicros / 1e6; // Convertim din micros în moneda standard
    const budget = budgetMicros / 1e6; // Convertim din micros în moneda standard
    const costPerConversion = conversions > 0 ? cost / conversions : 0; // Cost per conversie
    const conversionRate = conversions > 0 ? (conversions / cost) * 100 : 0; // Rată de conversie

    campaignData.push({ campaignName, cost, budget, conversions, costPerConversion, conversionRate });
  }

  Logger.log(`Datele pentru campaniile active de la ${startDate} până la ${endDate}:`);
  campaignData.forEach(c => 
    Logger.log(`${c.campaignName}: Cost ${c.cost.toFixed(2)} RON, Buget ${c.budget.toFixed(2)} RON, Conversii ${c.conversions.toFixed(2)}, Cost/Conversie ${c.costPerConversion.toFixed(2)} RON, Rată de conversie ${c.conversionRate.toFixed(2)}%`)
  );
  
  return campaignData;
}

// Funcție pentru trimiterea emailului formatat
function sendFormattedEmail(email, campaignData, startDate, endDate) {
  const subject = `Raport cost total`;

  // Calculăm totalurile
  const totalCost = campaignData.reduce((sum, c) => sum + c.cost, 0);
  const totalBudget = campaignData.reduce((sum, c) => sum + c.budget, 0);
  const totalConversions = campaignData.reduce((sum, c) => sum + c.conversions, 0);
  const totalCostPerConversion = totalConversions > 0 ? totalCost / totalConversions : 0;
  const totalConversionRate = totalConversions > 0 ? (totalConversions / totalCost) * 100 : 0;

  let body = `
    <html>
      <body data-rsssl=1>
        <h2>Raport Costuri Campanii Active</h2>
        <p>Costurile totale pentru campaniile active din perioada <strong>${startDate}</strong> - <strong>${endDate}</strong> sunt:</p>
        <table border="1" style="border-collapse: collapse; width: 80%; font-size: 14px;">
          <thead>
            <tr style="background-color: #f2f2f2;">
              <th style="text-align: left; padding: 6px;">Campanie</th>
              <th style="text-align: right; padding: 6px;">Cost (RON)</th>
              <th style="text-align: right; padding: 6px;">Buget (RON)</th>
              <th style="text-align: right; padding: 6px;">Conversii</th>
              <th style="text-align: right; padding: 6px;">Cost/Conversie (RON)</th>
              <th style="text-align: right; padding: 6px;">Rată Conversie (%)</th>
            </tr>
          </thead>
          <tbody>
  `;

  campaignData.forEach(c => {
    body += `
      <tr>
        <td style="text-align: left; padding: 6px;">${c.campaignName}</td>
        <td style="text-align: right; padding: 6px;">${c.cost.toFixed(2)}</td>
        <td style="text-align: right; padding: 6px;">${c.budget.toFixed(2)}</td>
        <td style="text-align: right; padding: 6px;">${c.conversions.toFixed(2)}</td>
        <td style="text-align: right; padding: 6px;">${c.costPerConversion.toFixed(2)}</td>
        <td style="text-align: right; padding: 6px;">${c.conversionRate.toFixed(2)}</td>
      </tr>
    `;
  });

  body += `
          </tbody>
          <tfoot>
            <tr style="font-weight: bold; background-color: #e6e6e6;">
              <td style="text-align: left; padding: 6px;">Total</td>
              <td style="text-align: right; padding: 6px;">${totalCost.toFixed(2)}</td>
              <td style="text-align: right; padding: 6px;">${totalBudget.toFixed(2)}</td>
              <td style="text-align: right; padding: 6px;">${totalConversions.toFixed(2)}</td>
              <td style="text-align: right; padding: 6px;">${totalCostPerConversion.toFixed(2)}</td>
              <td style="text-align: right; padding: 6px;">${totalConversionRate.toFixed(2)}</td>
            </tr>
          </tfoot>
        </table>
        <p>© encorem.ro</p>
        <p><em>Raport generat automat.</em></p>
      </body>
    </html>
  `;

  MailApp.sendEmail({
    to: email,
    subject: subject,
    htmlBody: body
  });

  Logger.log(`Email trimis către ${email} cu detaliile costurilor pentru campaniile active.`);
}
				
			

Cum să Implementezi Scriptul

  1. Navighează la interfața Google Ads.
  2. Mergi la “Instrumente și Setări” (pictograma cheii) în colțul din dreapta sus.
  3. Sub “Acțiuni în masă”, selectează “Scripturi”.
  4. Click pe butonul albastru plus pentru a crea un nou script.
  5. Copiază și lipeste scriptul furnizat în editor.
  6. Autorizează scriptul să acceseze contul tău Google Ads urmând instrucțiunile.
  7. Salvează și previzualizează scriptul pentru a te asigura că rulează corect.
  8. Programează scriptul să ruleze zilnic pentru a menține actualizați parametrii personalizați.

Script dezvoltat de Encorem.ro

Contactează-ne!