Dieses Snippet habe ich in jedes Google Ads Skript einbauen lassen.
// --- N8N HELPER FUNKTION ---
function reportToN8n(scriptName, status, message, sheetUrl) {
var account = AdsApp.currentAccount();
var payload = {
script_name: scriptName,
status: status, // Erlaubte Werte: 'SUCCESS', 'ERROR', 'OPTIMIZE', 'CRITICAL'
message: message,
sheet_url: sheetUrl || "",
timestamp: new Date().toISOString(),
account_name: account.getName(),
account_id: account.getCustomerId(),
currency: account.getCurrencyCode(),
};
var options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true,
};
try {
UrlFetchApp.fetch(N8N_WEBHOOK_URL, options);
Logger.log("Status an n8n gesendet: " + status);
} catch (e) {
Logger.log("Webhook fehlgeschlagen: " + e.message);
}
}
**Rolle:**
Du bist ein Senior Google Ads Script Developer und Experte für API-Integrationen.
**Aufgabe:**
Ich werde dir gleich den Code eines bestehenden Google Ads Skripts geben. Deine Aufgabe ist es, dieses Skript so zu erweitern, dass es seinen Status und Ergebnisse an einen n8n Webhook sendet.
Bitte verändere NICHT die eigentliche Logik des Skripts (Bidding, Keywords suchen, etc.), sondern füge nur das Monitoring-Framework hinzu.
**Anforderungen an die Integration:**
1. **Konfiguration:**
Füge ganz oben im Skript eine Variable hinzu:
`var N8N_WEBHOOK_URL = 'HIER_WEBHOOK_URL_EINFÜGEN';`
2. **Helper Funktion (Muss exakt so am Ende des Scripts eingefügt werden):**
Füge diese Funktion hinzu, die den HTTP POST Request steuert. Sie muss Kontext-Daten (Account Name/ID) automatisch ziehen, damit es auch in einem MCC-Setup funktioniert.
```javascript
function reportToN8n(scriptName, status, message, sheetUrl) {
var account = GoogleAdsApp.currentAccount();
var payload = {
'script_name': scriptName,
'status': status, // Erlaubte Werte: 'SUCCESS', 'ERROR', 'OPTIMIZE', 'CRITICAL'
'message': message,
'sheet_url': sheetUrl || '',
'timestamp': new Date().toISOString(),
'account_name': account.getName(),
'account_id': account.getCustomerId(),
'currency': account.getCurrencyCode()
};
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload),
'muteHttpExceptions': true
};
try {
UrlFetchApp.fetch(N8N_WEBHOOK_URL, options);
Logger.log('Status an n8n gesendet: ' + status);
} catch (e) {
Logger.log('Webhook fehlgeschlagen: ' + e.message);
}
}
Try-Catch Wrapper & Logik:
Umschließe den gesamten Code in der main() Funktion mit einem try { ... } catch (e) { ... } Block.
Im Catch-Block: Rufe reportToN8n mit dem Status 'ERROR' auf und übergib die Fehlermeldung (e.message).
Am Ende des Try-Blocks (Erfolg): Analysiere, ob das Skript Änderungen vorgenommen oder Daten gefunden hat.
Wenn JA (Daten gefunden/Änderungen gemacht): Sende Status 'OPTIMIZE' und die Anzahl der Funde/Änderungen oder die Beobachtung selbst als Message. Mit der Message alleine soll verständlich sein, welches Optimierungspotenzial es im Konto gibt (z.B. ob und welche Kampagnen budgetbeschränkt werden könnten.
Wenn NEIN (Nichts gefunden/Nur Check): Sende Status 'SUCCESS'.
Übergib, falls vorhanden, die URL des genutzten Google Sheets als 4. Parameter.
Script Name:
Definiere am Anfang von main() eine Variable var scriptName = 'EINDEUTIGER_NAME_DES_SCRIPTS'; und nutze diese für die Aufrufe.