Export Product Data

Exporteer product data naar een Google Sheet en bereken de ROI van elk product.

Start nu!
Exporteer Google Shopping Product data
Export Get started!

Dit script is geschreven door Martijn Beumer van Producthero. Door een paar kleine aanpassingen kan je nu met dit script alle productdata uit Google Shopping campagnes exporteren naar een Google Sheet. Dit rapport kan dan gebruikt worden als input voor bijvoorbeeld jouw productfeed. Met behulp van deze productdata kan je de prestaties per productId bekijken. Daarnaast geeft het script de mogelijkheid om op basis van de kosten en omzet uit Google Ads de ROI van elk product in de sheet te bereken.

Google Shopping ROI

De berekening van de ROI per product uit Google Shopping kan als input dienen voor de campagnestructuur in Google Shopping. Het indelen van de Smart Shopping of gewone Google Shopping campagnes met Smart Bidding op basis van ROI kan zorgen voor meer controle over de prestaties en inzet van budget in jouw account. Dit script kan automatisch de ROI berekenen van elk product. Let wel op, als je veel producten hebt is het aan te raden om deze bereken met een formule in de sheet zelf te zetten, omdat het script anders erg lang bezig is.

Instellingen

  • LOG: Geef aan of het script de tussenstappen moet rapporteren, door de waarde aan te passen naar 'true'.
  • DATE_RANGE: Geef aan hoeveel dagen het script terug moet kijken om de CPA te berekenen.
  • SPREADSHEET_URL: Maak een kopie van deze spreadsheet en vul de URL hier in, om de resultaten van het script in te zetten.
  • CALCULATE_ROI: Zet op 'true' om de ROI van elk product te berekenen en aan de sheet toe te voegen. Bij veel producten aan te raden om dit in de sheet zelf te doen.
The script
// Copyright 2023
//
// Created By: Martijn Beumer
// for Producthero
// Tweaked/Formatted by: Tibbe van Asten
// 
// Last update: 14-06-2022
//
// ABOUT THE SCRIPT
// Export productdata from Shopping campaigns to a sheet.
//
////////////////////////////////////////////////////////////////////

var config = {

  LOG : true,
  DATE_RANGE : last_n_days(30),
  
  // Edit the URL of an empty Google Sheet in here, with '/edit' at the end
  SPREADSHEET_URL : "",
  CONVERT_MICROS: true

}  
  
////////////////////////////////////////////////////////////////////

function main() {
  
  var spreadsheet = SpreadsheetApp.openByUrl(config.SPREADSHEET_URL);
  var sheet = spreadsheet.getActiveSheet();
  var from = config.DATE_RANGE[0];
  var to = config.DATE_RANGE[1];

  var report = AdsApp.report(
    "SELECT segments.product_item_id, metrics.clicks, metrics.impressions, metrics.ctr, metrics.conversions, metrics.conversions_from_interactions_rate, metrics.conversions_value, metrics.cost_micros " +
    "FROM shopping_performance_view " +
    "WHERE metrics.impressions > 0 " +
    "AND segments.date BETWEEN '" + config.DATE_RANGE.split(',')[0] + "' AND '" + config.DATE_RANGE.split(',')[1] + "'");
  
  report.exportToSheet(sheet);
  
    if(config.LOG === true){
      Logger.log("Initial export complete");
    }
  
  if(config.CONVERT_MICROS === true){
    const lastRow = sheet.getLastRow();
    const range = sheet.getRange("H2:H"+lastRow);
    const values = range.getValues();
    var newValues = [];

    for (let i = 0; i < values.length; i++) {
      var micro = values[i];
      var normal = micro / 1000000;
      newValues.push([normal]);
    }
    
    range.setValues(newValues);
  }

  Logger.log("Thanks for using this script!");
  
} // function main()

////////////////////////////////////////////////////////////////////

function last_n_days(n) {

	var	from = new Date(), to = new Date();
	to.setUTCDate(from.getUTCDate() - n);

	return google_date_range(from, to);

} // function last_n_days()

////////////////////////////////////////////////////////////////////

function google_date_range(from, to) {

	function google_format(date) {
		var date_array = [date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate()];
		if (date_array[1] < 10) date_array[1] = '0' + date_array[1];
		if (date_array[2] < 10) date_array[2] = '0' + date_array[2];

		return date_array.join('');
	}

	var inverse = (from > to);
	from = google_format(from);
	to = google_format(to);
	var result = [from, to];

	if (inverse) {
		result = [to, from];
	}

	return result.join(',');

} // function google_date_range()
Show whole script!
Loading Comments
The Experts
Tibbe van Asten Team Lead Performance Marketing
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
Jermaya Leijen Digital Marketing Strategist
Krzysztof Bycina PPC Specialist from Poland
How about you? JOIN US!
Sharing Knowledge
Caring

Adsscripts.com staat voor het delen van kennis. In de huidige markt houden SEA-specialisten de kennis en ervaring graag voor zich. Wij zijn er van overtuigd dat het delen van kennis ervoor kan zorgen dat iedereen beter wordt in haar of zijn werk. Daarom lopen wij hier graag in voorop, door onze kennis over scripts te delen met iedereen.

Wil jij ook graag een bijdrage leveren? Wij staan open voor nieuwe ideeën en feedback op alles wat je op Adsscripts.com vindt.

Neem contact op

Training &
Workshop
Neem contact op!
Adsscripts Training & Workshop