diff --git a/airtable_client.py b/airtable_client.py index 255684e..1e9c18a 100644 --- a/airtable_client.py +++ b/airtable_client.py @@ -45,6 +45,8 @@ class AirtableClient: created = [] updated = [] + to_create = [] + to_update = [] # lista de (record_id, changes, name) for gc in google_campaigns: gid = gc["id"] @@ -52,11 +54,7 @@ class AirtableClient: at_record = at_by_gid.get(gid) if at_record is None: - self.campaigns.create({ - "Campaign Name": gc["name"], - "CampaignID": int(gid), - "Status": at_status, - }) + to_create.append({"Campaign Name": gc["name"], "CampaignID": gid, "Status": at_status}) created.append(gc["name"]) else: changes = {} @@ -65,9 +63,18 @@ class AirtableClient: if at_record["fields"].get("Status") != at_status: changes["Status"] = at_status if changes: - self.campaigns.update(at_record["id"], changes) + to_update.append((at_record["id"], changes, gc["name"])) updated.append(gc["name"]) + # Crear en lotes de 10 + for i in range(0, len(to_create), 10): + self.campaigns.batch_create(to_create[i:i+10]) + + # Actualizar en lotes de 10 + for i in range(0, len(to_update), 10): + batch = [{"id": rid, "fields": changes} for rid, changes, _ in to_update[i:i+10]] + self.campaigns.batch_update(batch) + return {"created": created, "updated": updated} def get_leads_this_month(self, cursoid_text: str) -> int: diff --git a/run.py b/run.py index b135e78..c6355e1 100644 --- a/run.py +++ b/run.py @@ -1,3 +1,7 @@ +import sys +import io +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", line_buffering=True) + from airtable_client import AirtableClient from google_ads_client import GoogleAdsClient from analyzer import analyze