Sync campaign Status from Google Ads (ENABLED→Activa, PAUSED→Pausada)
Both on create and update, mirror the real Google Ads status instead of defaulting to Pausada. https://claude.ai/code/session_01WEcdWPxGWZKk8FGwBRLGR2
This commit is contained in:
parent
905ad3bcd2
commit
67d5104dca
@ -30,10 +30,12 @@ class AirtableClient:
|
|||||||
def sync_campaigns_from_google_ads(self, google_campaigns: list[dict]) -> dict:
|
def sync_campaigns_from_google_ads(self, google_campaigns: list[dict]) -> dict:
|
||||||
"""
|
"""
|
||||||
Sincroniza campañas de Google Ads → Airtable.
|
Sincroniza campañas de Google Ads → Airtable.
|
||||||
- Crea las campañas nuevas (Activa=False, requiere configuración manual de PPL/Cap/CPA).
|
- Crea las campañas nuevas con el status real de Google Ads.
|
||||||
- Actualiza el nombre si ha cambiado.
|
- Actualiza nombre y/o status si han cambiado.
|
||||||
Devuelve un resumen con listas de campañas creadas y actualizadas.
|
Devuelve un resumen con listas de campañas creadas y actualizadas.
|
||||||
"""
|
"""
|
||||||
|
STATUS_MAP = {"ENABLED": "Activa", "PAUSED": "Pausada"}
|
||||||
|
|
||||||
all_records = self.campaigns.all()
|
all_records = self.campaigns.all()
|
||||||
at_by_gid = {
|
at_by_gid = {
|
||||||
str(r["fields"].get("CampaignID", "")).strip(): r
|
str(r["fields"].get("CampaignID", "")).strip(): r
|
||||||
@ -46,19 +48,22 @@ class AirtableClient:
|
|||||||
|
|
||||||
for gc in google_campaigns:
|
for gc in google_campaigns:
|
||||||
gid = gc["id"]
|
gid = gc["id"]
|
||||||
|
at_status = STATUS_MAP.get(gc["status"], "Pausada")
|
||||||
at_record = at_by_gid.get(gid)
|
at_record = at_by_gid.get(gid)
|
||||||
|
|
||||||
if at_record is None:
|
if at_record is None:
|
||||||
self.campaigns.create({
|
self.campaigns.create({
|
||||||
"Campaign Name": gc["name"],
|
"Campaign Name": gc["name"],
|
||||||
"CampaignID": int(gid),
|
"CampaignID": int(gid),
|
||||||
"Status": "Pausada",
|
"Status": at_status,
|
||||||
})
|
})
|
||||||
created.append(gc["name"])
|
created.append(gc["name"])
|
||||||
else:
|
else:
|
||||||
changes = {}
|
changes = {}
|
||||||
if at_record["fields"].get("Campaign Name") != gc["name"]:
|
if at_record["fields"].get("Campaign Name") != gc["name"]:
|
||||||
changes["Campaign Name"] = gc["name"]
|
changes["Campaign Name"] = gc["name"]
|
||||||
|
if at_record["fields"].get("Status") != at_status:
|
||||||
|
changes["Status"] = at_status
|
||||||
if changes:
|
if changes:
|
||||||
self.campaigns.update(at_record["id"], changes)
|
self.campaigns.update(at_record["id"], changes)
|
||||||
updated.append(gc["name"])
|
updated.append(gc["name"])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user