diff --git a/airtable_client.py b/airtable_client.py index d37f219..255684e 100644 --- a/airtable_client.py +++ b/airtable_client.py @@ -30,10 +30,12 @@ class AirtableClient: def sync_campaigns_from_google_ads(self, google_campaigns: list[dict]) -> dict: """ Sincroniza campañas de Google Ads → Airtable. - - Crea las campañas nuevas (Activa=False, requiere configuración manual de PPL/Cap/CPA). - - Actualiza el nombre si ha cambiado. + - Crea las campañas nuevas con el status real de Google Ads. + - Actualiza nombre y/o status si han cambiado. Devuelve un resumen con listas de campañas creadas y actualizadas. """ + STATUS_MAP = {"ENABLED": "Activa", "PAUSED": "Pausada"} + all_records = self.campaigns.all() at_by_gid = { str(r["fields"].get("CampaignID", "")).strip(): r @@ -46,19 +48,22 @@ class AirtableClient: for gc in google_campaigns: gid = gc["id"] + at_status = STATUS_MAP.get(gc["status"], "Pausada") at_record = at_by_gid.get(gid) if at_record is None: self.campaigns.create({ "Campaign Name": gc["name"], "CampaignID": int(gid), - "Status": "Pausada", + "Status": at_status, }) created.append(gc["name"]) else: changes = {} if at_record["fields"].get("Campaign Name") != gc["name"]: changes["Campaign Name"] = gc["name"] + if at_record["fields"].get("Status") != at_status: + changes["Status"] = at_status if changes: self.campaigns.update(at_record["id"], changes) updated.append(gc["name"])