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:
Claude 2026-04-17 11:52:38 +00:00
parent 905ad3bcd2
commit 67d5104dca
No known key found for this signature in database

View File

@ -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"])