Cost Per Conversion Script

24 views
Skip to first unread message

Vania Damianova

unread,
Jun 24, 2024, 4:50:59 AM (9 days ago) Jun 24
to Google Ads Scripts Forum
Hello. I am tasked with writing a script to find all keywords that have a Cost Per Conversion higher than $8 for the last 30 days. I have used the base script but its not working. I am a beginner so can anyone help me? Thanks in advance!

Nils Rooijmans

unread,
Jun 25, 2024, 3:34:57 AM (8 days ago) Jun 25
to Google Ads Scripts Forum
You can use Chat GPT to create the script for you. 
I've asked it to create a basic script for you, here's what it came up with (I've tested and asked it to fix initial bugs, it works):

function main() {
    // Define the date range
    var dateRange = getLast30Days();

    // Query the keywords
    var query = `
        SELECT
            metrics.cost_micros,
            metrics.conversions,
            metrics.cost_per_conversion,
            ad_group_criterion.keyword.text
        FROM
            keyword_view
        WHERE
            metrics.cost_per_conversion > 8000000 AND
            segments.date BETWEEN '${dateRange.startDate}' AND '${dateRange.endDate}'
    `;

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

    // Output the results
    while (rows.hasNext()) {
        var row = rows.next();
        var keyword = row['ad_group_criterion.keyword.text'];
        var cost = row['metrics.cost_micros'] / 1000000; // Convert from micros to standard currency
        var conversions = row['metrics.conversions'];
        var costPerConversion = row['metrics.cost_per_conversion'] / 1000000; // Convert from micros to standard currency

        Logger.log('Keyword: ' + keyword + ', Cost: ' + cost + ', Conversions: ' + conversions + ', CostPerConversion: ' + costPerConversion);
    }
}

function getLast30Days() {
    var today = new Date();
    var last30Days = new Date(today);
    last30Days.setDate(today.getDate() - 30);

    var todayString = Utilities.formatDate(today, AdsApp.currentAccount().getTimeZone(), 'yyyy-MM-dd');
    var last30DaysString = Utilities.formatDate(last30Days, AdsApp.currentAccount().getTimeZone(), 'yyyy-MM-dd');

    return {
        startDate: last30DaysString,
        endDate: todayString
    };
}


Hope this helps,

Nils Rooijmans
https://nilsrooijmans.com
See my Google Ads Scripts FAQ to avoid the same mistakes I made: https://nilsrooijmans.com/google-ads-scripts-faq/

Dominique Rouillard

unread,
Jun 25, 2024, 4:49:01 AM (8 days ago) Jun 25
to Google Ads Scripts Forum

Salut Vania,

Pour aider avec le script qui recherche les mots-clés ayant un coût par conversion supérieur à 8$ au cours des 30 derniers jours, j'ai mis à jour le script pour qu'il affiche également le taux de conversion et arrondisse les valeurs à deux décimales.

Voici la version améliorée du script :


function main() {
    // Définir la plage de dates des 30 derniers jours
    var dateRange = getLast30Days();

    // Construire la requête pour obtenir les mots-clés avec un coût par conversion supérieur à 8 unités pour des campagnes spécifiques

    var query = `
        SELECT
            metrics.cost_micros,
            metrics.conversions,
            metrics.cost_per_conversion,
            metrics.clicks,
            ad_group_criterion.keyword.text,
            campaign.name

        FROM
            keyword_view
        WHERE
            metrics.cost_per_conversion > 8000000 AND
            segments.date BETWEEN '${dateRange.startDate}' AND '${dateRange.endDate}'
    `;

    // Exécuter le rapport

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

    // Afficher les résultats

    while (rows.hasNext()) {
        var row = rows.next();
        var keyword = row['ad_group_criterion.keyword.text'];
        var campaignName = row['campaign.name'];
        var cost = (row['metrics.cost_micros'] / 1000000).toFixed(2); // Convertir de micros en monnaie standard et arrondir à 2 décimales

        var conversions = row['metrics.conversions'];
        var costPerConversion = (row['metrics.cost_per_conversion'] / 1000000).toFixed(2); // Convertir de micros en monnaie standard et arrondir à 2 décimales
        var clicks = row['metrics.clicks'];
        var conversionRate = ((conversions / clicks) * 100).toFixed(2); // Calculer le taux de conversion et arrondir à 2 décimales

        Logger.log('Campagne: ' + campaignName + ', Mot-clé: ' + keyword + ', Coût: ' + cost + ', Conversions: ' + conversions + ', Coût par Conversion: ' + costPerConversion + ', Taux de Conversion: ' + conversionRate + '%');
    }
}

function getLast30Days() {
    // Obtenir la date actuelle

    var today = new Date();
    // Calculer la date d'il y a 30 jours

    var last30Days = new Date(today);
    last30Days.setDate(today.getDate() - 30);

    // Formater les dates en 'yyyy-MM-dd' dans le fuseau horaire du compte

Google Ads Scripts Forum Advisor

unread,
Jun 25, 2024, 4:52:52 AM (8 days ago) Jun 25
to adwords...@googlegroups.com

Hi,

Thank you Nils for providing the solution.

I would recommend that you use the code provided by Nils and get back to us if you still face any issues. 

This message is in relation to case "ref:!00D1U01174p.!5004Q02tJSch:ref" (ADR-00243695)

Thanks,
 
Google Logo Google Ads Scripts Team


Reply all
Reply to author
Forward
0 new messages