Bulk-uploads webinterface (AdWords)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Ooit in het tweede decennium van deze eeuw (of misschien wel eerder), was de AdWords Editor de aangewezen manier om wijzigingen in bulk aan te brengen. Tegen het eind van dat decennium, werd de AdWords Editor niet langer bijgehouden. Het kon bv. niet overweg met de aangepast opmaak van advertenties die vanaf ca. 2019 actief werden.

Gelukkig kun je tegenwoordig via de webinterface instellingen in bulk uploaden. Op de verschillende schermen vind je onder de knop Edit de mogelijkheden om sjablonen te down- en te uploaden.

Bestandsformaat

Bestandsformaat is een fluitje van een cent.

Vanuit LibreOffice Calc

  • De standaardinstellingen voldoen (komma als scheidingsteken; Tekstvelden omsloten met weet-ik-veel-wat; UTF8)
  • Mijn favoriete instellingen voldoen gelukkig ook (tab als scheidingsteken; Tekstvelden optioneel omsloten; UTF8).

Geldbedragen: Punt als decimaalscheidingsteken; Geen valuta-symbool. Waarschijnlijk het handigste om bij het invullen van het sjabloon, geldbedragen als tekst in te voeren en niet als getallen.

Vanuit MySQL

Bv.:

"select
	*
from
	campaign
order by
	sort_order
into outfile
	'",
	@file_name,"'
character set
	utf8
fields terminated by
	'\t'
escaped by
	''    
lines terminated by
	'\n';"

Sjabloon downloaden

Ga in Google Ads naar de entiteit waarvan je wilt weten hoe het sjabloon eruit ziet (bv. AdGroup), en download die entiteit. Dat werkt ook als de entiteit leeg is.

Voorbeeld: AdGroup (sep. 2019 - In mei 2020 leek dit nog steeds actueel te zijn):

Ad group report
All time
Ad group status,Ad group,Status,Currency code,Default max. CPC,Ad group type,Clicks,Impr.,CTR,Currency code,Avg. CPC,Cost
Total: Account,,,,,,0,0, --,EUR, --,0.00

Kenmerken:

  • UTF-8
  • Komma-gescheiden
  • Punt als decimaalcheidingsteken

Hoe het werkt

AdGroups: Alle velden om een AdGroup te specificeren. Kolomnamen overgenomen uit gedownloade sjabloon
Alles op één regel: Dit geeft een foutmelding, omdat AdWords niet weet welke entiteit je wilt aanpassen
Compleet voorbeeld: Dit werkt super: Verschillende entiteiten op verschillende regels; Lege kolommen geen probleem; Kolommen met 'interne' gegevens ook geen probleem; Al verwerkte gegevens opnieuw uploaden ook geen probleem

Herhaaldelijk hetzelfde bestand uploaden?

Het is geen probleem om herhaaldelijk hetzelfde document te uploaden.

In juni 2020 uploadde ik een document met 1.600 AdGroups. De eerste 200 werden geweigerd met een foutmelding An error has occured, try again later. Toen ik tien minuten later het document opnieuw uploadde, waren alle 1.600 Adgroups aanwezig.

Dit is nog een fractie interessanter: An error has occured. Please try again later en ook nog niets geüpload!

Escape dubbele aanhalingstekens (juni 2020)

Uploads Google Ads: Dubbele aanhalingstekens escapen door ze te omhullen in dubbele aanhalingstekens

Dubbele aanhalingstekens (namen AdGroups, keywords), moet je escapen door er een drie aanhalingstekens van te maken.

Voorbeeld hoe ik dat in juni 2020 heb gedaan:

CREATE DEFINER=`root`@`localhost` PROCEDURE `export_set_escape_codes`(in tblname tinytext )
BEGIN
#
# Escape NULL & " (for Google Ads) - Last updated: June 2020
######################################################################################################################################
#
# * Beautifully simple code :)
# * Where-clause should include db-name. Otherwise columns from other databases will be included!
# * Tinytext: Up to 255 characters - That's plenty
#
#
######################################################################################################################################
# Replace null with "" - Form DDL-string
######################################################################################################################################
#
#
set @string_01=concat
(
	"Update ",tblname," set ",
	(
	select group_concat(column_name,"=ifnull(",column_name,",'')")
        from information_schema.columns 
        where table_name=tblname and table_schema=database()
    )
    ,";"
 );

# The ddl code above, expanded (for a given tblname)
##############################################################
#
# Update adgroup 
# set 
#    campaign_name=ifnull(campaign_name,''),
#    adgroup_name=ifnull(adgroup_name,''),
#    adgroup_status=ifnull(adgroup_status,''),
#    currency_code=ifnull(currency_code,''),
#    max_cpc=ifnull(max_cpc,''),
#    adgroup_type=ifnull(adgroup_type,''),
#    sort_order=ifnull(sort_order,'');
#


######################################################################################################################################
# Replace " with """ - Form DDL-string
######################################################################################################################################
#
#
set @r0=char(34);
set @r1=concat(char(34), char(34), char(34));

set @string_02=concat
(
	"Update ",tblname," set ",
	(
	select group_concat(column_name,"=replace(",column_name,", '", @r0,"', '", @r1, "')")
        from information_schema.columns 
        where table_name=tblname and table_schema=database()
    )
    ,";"
 );
 
######################################################################################################################################
# Check
######################################################################################################################################
#
select @string_01;
select @string_02;


######################################################################################################################################
# Execute
######################################################################################################################################
#
prepare ps1 from @string_01;
execute ps1;
drop prepare ps1;


prepare ps2 from @string_02;
execute ps2;
drop prepare ps2;

END

Sjablonen

AdGroup (Aug. 2020)

Ad group report											
18 July 2020 - 16 August 2020											
Ad group status	Ad group	Status	   Currency code   Default max. CPC   Impr.   Clicks   CTR	Currency code   Avg. CPC   Cost   Label
Enabled	        foo +bar	Eligible   EUR	           2.50	              2	      1	       50.00%   EUR	        0.26	   0.26	

Ads (Aug. 2020)

Dit is een export vanaf MCC-niveau, dus met verschillende soorten advertenties uit verschillende accounts en campagnes. Veelzijdiger kan het waarschijnlijk niet: Dit is niet leesbaar als verbatim tekst. Daarom hierbij alleen de namen van de kolommen.

Let op: Dit is hoe een download eruit ziet. Voor uploads is er in ieder geval één wijziging (customer-id - zie in de tabel).

Veldnaam Opmerkingen
Ad status
Ad type Waardes die ik ben tegengekomen:
  • Expanded text ad
  • Product ad
  • Responsive search ad
  • Text ad
Final URL
Headline
Headline 1
Headline 1 position
Headline 2
Headline 2 position
Headline 3
Headline 3 position
Headline 4
Headline 4 position
Headline 5
Headline 5 position
Headline 6
Headline 6 position
Headline 7
Headline 7 position
Headline 8
Headline 8 position
Headline 9
Headline 9 position
Headline 10
Headline 10 position
Headline 11
Headline 11 position
Headline 12
Headline 12 position
Headline 13
Headline 13 position
Headline 14
Headline 14 position
Headline 15
Headline 15 position
Description
Description 1
Description 1 position
Description 2
Description 2 position
Description 3
Description 3 position
Description 4
Description 4 position
Display URL
Path 1
Path 2
Auto-applied ad suggestion
Mobile final URL
Tracking template
Final URL suffix
Custom parameter
Campaign Naam van de campaign - Dus niet een code ofzo
Ad group
Status
entity_owner_info.descriptive_name Dit lijkt de enige verwijzing te zijn naar het account. Niet de code, maar de naam. LET OP: Als je data wilt uploaden, moet je kolom Customer id gebruiken, met daarin de gebruikelijke Google Ads-code
Impr.
Interactions
Interaction rate
Currency code
Currency
Avg. cost
Converted currency code
Avg. cost (Converted currency)
Cost
Cost (Converted currency)

Zie ook