Bulk-uploads webinterface (AdWords): verschil tussen versies
(12 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 7: | Regel 7: | ||
Bestandsformaat is een fluitje van een cent. | Bestandsformaat is een fluitje van een cent. | ||
− | + | === Vanuit LibreOffice Calc === | |
* De standaardinstellingen voldoen (komma als scheidingsteken; Tekstvelden omsloten met weet-ik-veel-wat; UTF8) | * De standaardinstellingen voldoen (komma als scheidingsteken; Tekstvelden omsloten met weet-ik-veel-wat; UTF8) | ||
Regel 14: | Regel 14: | ||
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. | 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.: | Bv.: | ||
Regel 81: | Regel 81: | ||
Dubbele aanhalingstekens (namen AdGroups, keywords), moet je escapen door er een drie aanhalingstekens van te maken. | 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: | ||
+ | |||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | == Sjablonen == | ||
+ | |||
+ | === AdGroup (Aug. 2020) === | ||
+ | |||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | === 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). | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! 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 <code>Customer id</code> 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 == | == Zie ook == | ||
* [[Non-standard characters (Google Ads)]] | * [[Non-standard characters (Google Ads)]] |
Huidige versie van 18 aug 2020 om 16:18
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
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.
Escape dubbele aanhalingstekens (juni 2020)
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:
|
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) |