Script: Set up Google Ads Campaigns Directly from Google Doc

Veröffentlicht am 23.7.2026

Geprüft von Arnt Eriksen aktualisiert am 26.7.2026

Einleitung

Einrichtung von Google-Ads-Suchkampagnen ist eine sehr zeitaufwendige Aufgabe. Im Gegensatz zu Smart campaigns erfordert dies viel Zeit und Aufwand. Viele Jahre lang hatten wir mit Excel und dem Google Ads Editor zu kämpfen. Es war sehr frustrierend, stundenlang wiederholbare Aufgaben zu erledigen, die automatisiert werden sollten. 

Unsere Entwickler haben eine Lösung geschrieben, mit der Sie neue Kampagnen direkt aus Google Doc hochladen können. Was für eine Erleichterung. Jetzt dauert es nur noch wenige Minuten, neue Kampagnen einzurichten und sie mithilfe der SKAG-Struktur hochzuladen.

 Why SKAG?

Relevanz ist ein entscheidender Erfolgsfaktor in Google Ads. Relevanz wird mit höheren Quality Scores und dadurch niedrigeren Kosten pro Klick belohnt.

SKAG bedeutet „single keyword per ad group“, also dass Sie in jeder Ihrer Anzeigengruppen nur ein Keyword verwenden.

Um relevante Google Ads-Kampagnen aufzubauen, sollten Sie für jedes Ihrer Ziel-Keywords separate Anzeigentexte hinzufügen können. Dies lässt sich nur mit der SKAG-Struktur erreichen. Mit SKAG können Sie:

  1. Für jedes Ihrer Ziel-Keywords separate, relevante Anzeigen erstellen
  2. Zusätzliche Erweiterungen für jedes Ihrer Keywords erstellen
  3. Ziel-CPA-Gebote auf Anzeigengruppenebene für jedes Keyword individuell festlegen

Wir verwenden diese Struktur seit Jahren in all unseren Konten, und sie hat sich als sehr einfach zu verwalten erwiesen. Anfangs mag sie etwas kompliziert wirken. Aber Sie will werden SKAG lieben und sofort erkennen, wie elegant es ist!

Gehen wir nun die Schritte zur Einrichtung Ihrer Google Ads-Kampagne durch.

Schritt 1. Google Doc mit Ziel-Keywords vorbereiten

  1. Erstellen Sie eine Kopie dieses template 
  2. Fügen Sie die Liste Ihrer Ziel-Keywords und Anzeigen ein
  3. Wenn Sie mehr als 2 Kampagnen erstellen müssen, fügen Sie weitere Tabs hinzu.

Step 2. Upload campaigns

Navigieren Sie zu Bulk Operations > Scripts

Um ein Skript auf MMC-Ebene hinzuzufügen, kopieren Sie den folgenden Code und fügen Sie ihn ein:

function main(){ var mccAccount = AdWordsApp.currentAccount('644-558-2469'); var accountID = '443-484-0665'; // Nicht vergessen: anpassen! var childAccounts = MccApp.accounts().withIds([accountID]).get(); var childAccount = childAccounts.next(); MccApp.select(childAccount); var SPREADSHEET_ID = '1PLc2IHf2YYeo_O9dSEldN4Jq4s9CXaBynuNHfHWlPXQ'; //Nicht vergessen: anpassen! var ss = SpreadsheetApp.openById(SPREADSHEET_ID); SpreadsheetApp.setActiveSpreadsheet(ss); var sheets = ss.getSheets(); var columnsCampaign = [ 'Campaign', 'Budget', 'Bid Strategy type', 'Campaign type', 'Campaign subtype' ]; var columnsAdgroups = ['Campaign', 'Ad group', 'Bid Strategy type', 'Default max. CPC'//, 'Ad', 'Description line 1', 'Description line 2', 'Description line 2', 'Display URL', 'Final URL' ]; var columnsKeywords = ['Campaign', 'Ad group', 'Keyword' ]; var columnsAds = ['Campaign', 'Ad group', 'Headline 1', 'Headline 2', 'Description', 'Path 1', 'Path 2', 'Final URL' ]; var uploadCampaign = AdWordsApp.bulkUploads().newCsvUpload( columnsCampaign, {moneyInMicros: false}); var uploadAdgroup = AdWordsApp.bulkUploads().newCsvUpload( columnsAdgroups, {moneyInMicros: false}); var uploadKeyword = AdWordsApp.bulkUploads().newCsvUpload( columnsKeywords, {moneyInMicros: false}); var uploadAds = AdWordsApp.bulkUploads().newCsvUpload( columnsAds, {moneyInMicros: false}); //BMM-Kampagnen hinzufügen for (var sheetNum = 0; sheetNum < sheets.length; sheetNum++){ SpreadsheetApp.setActiveSheet(sheets[sheetNum]); var campaign = SpreadsheetApp.getActiveSheet().getName() + " BMM"; uploadCampaign.append({ 'Campaign': campaign, 'Budget': 1, 'Bid Strategy type': 'cpc', 'Campaign type': 'Search Only', 'Campaign subtype' : 'All features' }); var values = SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues(); var values2 = SpreadsheetApp.getActiveSheet().getRange('B2:G').getValues(); outer: for (var i = 0; i < values.length; i++) { var adgroup = values[i][0].toString().trim(); if (adgroup != '') { uploadAdgroup.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Bid Strategy type': 'cpc', 'Default max. CPC' : 1 }); var keyword = "+" + adgroup.replace(/ /g, ' +') uploadKeyword.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Keyword': keyword }); //Logger.log(keyword); for (var k = 0; k < values2.length; k++) { var adHead1 = values2[k][0].toString().trim(); var adHead2 = values2[k][1].toString().trim(); var adDescr = values2[k][2].toString().trim(); var path1 = values2[k][3].toString().trim(); var path2 = values2[k][4].toString().trim(); var finalURL = values2[k][5].toString().trim(); if (adHead1 != ''){ uploadAds.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Headline 1': adHead1, 'Headline 2': adHead2, 'Description': adDescr, 'Path 1': path1, 'Path 2': path2, 'Final URL' : finalURL }); } else continue outer; //Logger.log([campaign,adgroup,adHead,adDescr1,adDescr2,displURL,finalURL]); } } } } //Exact-Match-Kampagnen hinzufügen for (var sheetNum = 0; sheetNum < sheets.length; sheetNum++){ SpreadsheetApp.setActiveSheet(sheets[sheetNum]); var campaign = SpreadsheetApp.getActiveSheet().getName() + " Exact"; uploadCampaign.append({ 'Campaign': campaign, 'Budget': 1, 'Bid Strategy type': 'cpc', 'Campaign type': 'Search Only', 'Campaign subtype' : 'All features' }); var values = SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues(); var values2 = SpreadsheetApp.getActiveSheet().getRange('B2:G').getValues(); outer: for (var i = 0; i < values.length; i++) { var adgroup = values[i][0].toString().trim(); if (adgroup != '') { uploadAdgroup.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Bid Strategy type': 'cpc', 'Default max. CPC' : 1 }); var keyword = '[' + adgroup + ']'; uploadKeyword.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Keyword': keyword }); for (var k = 0; k < values2.length; k++) { var adHead1 = values2[k][0].toString().trim(); var adHead2 = values2[k][1].toString().trim(); var adDescr = values2[k][2].toString().trim(); var path1 = values2[k][3].toString().trim(); var path2 = values2[k][4].toString().trim(); var finalURL = values2[k][5].toString().trim(); if (adHead1 != ''){ uploadAds.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Headline 1': adHead1, 'Headline 2': adHead2, 'Description': adDescr, 'Path 1': path1, 'Path 2': path2, 'Final URL' : finalURL }); } else continue outer; //Logger.log([campaign,values[i][0],values2[k][0],values2[k][4]]); } } //Logger.log([campaign,values[i][0],values2[0][0],values2[0][4]]); } } uploadCampaign.forCampaignManagement(); uploadAdgroup.forCampaignManagement(); uploadKeyword.forCampaignManagement(); uploadAds.forCampaignManagement(); uploadCampaign.apply(); Utilities.sleep(5000); uploadAdgroup.apply(); Utilities.sleep(5000); uploadAds.apply(); Utilities.sleep(5000); uploadKeyword.apply(); }

Um Code direkt aus Ihrem AdWords-Konto hinzuzufügen, verwenden Sie diesen Code:


function main(){ var SPREADSHEET_ID = '1PLc2IHf2YYeo_O9dSEldN4Jq4s9CXaBynuNHfHWlPXQ'; //Nicht vergessen: anpassen! var ss = SpreadsheetApp.openById(SPREADSHEET_ID); SpreadsheetApp.setActiveSpreadsheet(ss); var sheets = ss.getSheets(); var columnsCampaign = [ 'Campaign', 'Budget', 'Bid Strategy type', 'Campaign type', 'Campaign subtype' ]; var columnsAdgroups = ['Campaign', 'Ad group', 'Bid Strategy type', 'Default max. CPC'//, 'Ad', 'Description line 1', 'Description line 2', 'Description line 2', 'Display URL', 'Final URL' ]; var columnsKeywords = ['Campaign', 'Ad group', 'Keyword' ]; var columnsAds = ['Campaign', 'Ad group', 'Headline 1', 'Headline 2', 'Description', 'Path 1', 'Path 2', 'Final URL' ]; var uploadCampaign = AdWordsApp.bulkUploads().newCsvUpload( columnsCampaign, {moneyInMicros: false}); var uploadAdgroup = AdWordsApp.bulkUploads().newCsvUpload( columnsAdgroups, {moneyInMicros: false}); var uploadKeyword = AdWordsApp.bulkUploads().newCsvUpload( columnsKeywords, {moneyInMicros: false}); var uploadAds = AdWordsApp.bulkUploads().newCsvUpload( columnsAds, {moneyInMicros: false}); //BMM-Kampagnen hinzufügen for (var sheetNum = 0; sheetNum < sheets.length; sheetNum++){ SpreadsheetApp.setActiveSheet(sheets[sheetNum]); var campaign = SpreadsheetApp.getActiveSheet().getName() + " BMM"; uploadCampaign.append({ 'Campaign': campaign, 'Budget': 1, 'Bid Strategy type': 'cpc', 'Campaign type': 'Search Only', 'Campaign subtype' : 'All features' }); var values = SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues(); var values2 = SpreadsheetApp.getActiveSheet().getRange('B2:G').getValues(); outer: for (var i = 0; i < values.length; i++) { var adgroup = values[i][0].toString().trim(); if (adgroup != '') { uploadAdgroup.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Bid Strategy type': 'cpc', 'Default max. CPC' : 1 }); var keyword = "+" + adgroup.replace(/ /g, ' +') uploadKeyword.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Keyword': keyword }); //Logger.log(keyword); for (var k = 0; k < values2.length; k++) { var adHead1 = values2[k][0].toString().trim(); var adHead2 = values2[k][1].toString().trim(); var adDescr = values2[k][2].toString().trim(); var path1 = values2[k][3].toString().trim(); var path2 = values2[k][4].toString().trim(); var finalURL = values2[k][5].toString().trim(); if (adHead1 != ''){ uploadAds.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Headline 1': adHead1, 'Headline 2': adHead2, 'Description': adDescr, 'Path 1': path1, 'Path 2': path2, 'Final URL' : finalURL }); } else continue outer; //Logger.log([campaign,adgroup,adHead,adDescr1,adDescr2,displURL,finalURL]); } } } } //Exact-Match-Kampagnen hinzufügen for (var sheetNum = 0; sheetNum < sheets.length; sheetNum++){ SpreadsheetApp.setActiveSheet(sheets[sheetNum]); var campaign = SpreadsheetApp.getActiveSheet().getName() + " Exact"; uploadCampaign.append({ 'Campaign': campaign, 'Budget': 1, 'Bid Strategy type': 'cpc', 'Campaign type': 'Search Only', 'Campaign subtype' : 'All features' }); var values = SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues(); var values2 = SpreadsheetApp.getActiveSheet().getRange('B2:G').getValues(); outer: for (var i = 0; i < values.length; i++) { var adgroup = values[i][0].toString().trim(); if (adgroup != '') { uploadAdgroup.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Bid Strategy type': 'cpc', 'Default max. CPC' : 1 }); var keyword = '[' + adgroup + ']'; uploadKeyword.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Keyword': keyword }); for (var k = 0; k < values2.length; k++) { var adHead1 = values2[k][0].toString().trim(); var adHead2 = values2[k][1].toString().trim(); var adDescr = values2[k][2].toString().trim(); var path1 = values2[k][3].toString().trim(); var path2 = values2[k][4].toString().trim(); var finalURL = values2[k][5].toString().trim(); if (adHead1 != ''){ uploadAds.append({ 'Campaign': campaign, 'Ad group': adgroup, 'Headline 1': adHead1, 'Headline 2': adHead2, 'Description': adDescr, 'Path 1': path1, 'Path 2': path2, 'Final URL' : finalURL }); } else continue outer; //Logger.log([campaign,values[i][0],values2[k][0],values2[k][4]]); } } //Logger.log([campaign,values[i][0],values2[0][0],values2[0][4]]); } } uploadCampaign.forCampaignManagement(); uploadAdgroup.forCampaignManagement(); uploadKeyword.forCampaignManagement(); uploadAds.forCampaignManagement(); uploadCampaign.apply(); Utilities.sleep(5000); uploadAdgroup.apply(); Utilities.sleep(5000); uploadAds.apply(); Utilities.sleep(5000); uploadKeyword.apply(); }

Schritt 3. Skript in der Vorschau anzeigen und ausführen

1

Schritt 4. Warten Sie 5 Minuten und prüfen Sie Ihre neuen Kampagnen!

Es ist auch eine Premium-Version dieses Skripts verfügbar. Damit können Sie mithilfe des Ad Generators für jede Ihrer Anzeigengruppen eine separate Anzeige erstellen. Für eine Demo können Sie gern Kontakt mit uns aufnehmen.

Teilen über:
Artikel von Alex Chi
Co-Founder
Alex Chi
Inhaltsverzeichnis
Standort
UKRAINE
Kyjiw, Jamska-Straße 35, Büro 12 +38 098 692 68 42
Standort
PORTUGAL
Cascais, Avenida Faial 371A, Büro 3 +351 922 210 245
Standort
USA
Chicago, 171 N Aberdeen St, Büro 400 +18 888 939 981
Standort
NORWEGEN
Oslo, Nedre Slottsgate 4 +479 228 0348