Link Leads Lake records to campaign on each run

- get_leads_this_month() now returns (count, [record_ids])
- update_campaign_leads_lake() updates the multipleRecordLinks
  field 'Leads Lake' in Google Ads Campaigns with the lead IDs
  found for that course this month
- run.py calls the update after fetching leads per campaign

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jose Manuel 2026-04-20 10:21:30 +02:00
parent ec3802eccf
commit 2191a498d7
2 changed files with 12 additions and 6 deletions

View File

@ -147,9 +147,9 @@ class AirtableClient:
return {"created": created, "updated": updated} return {"created": created, "updated": updated}
def get_leads_this_month(self, cursoid_text: str) -> int: def get_leads_this_month(self, cursoid_text: str) -> tuple[int, list[str]]:
""" """
Cuenta todos los leads validados del mes actual para un curso. Devuelve (count, [record_ids]) de leads del mes actual para un curso.
Filtra por attr_cursoid (que coincide con CursoID Text de la campaña). Filtra por attr_cursoid (que coincide con CursoID Text de la campaña).
""" """
now = datetime.now() now = datetime.now()
@ -161,5 +161,10 @@ class AirtableClient:
f"{{creado}}>='{mes_inicio}'" f"{{creado}}>='{mes_inicio}'"
f")" f")"
) )
records = self.leads.all(formula=formula) records = self.leads.all(formula=formula, fields=["airtable id"])
return len(records) ids = [r["id"] for r in records]
return len(ids), ids
def update_campaign_leads_lake(self, campaign_airtable_id: str, lead_ids: list[str]) -> None:
"""Actualiza el campo 'Leads Lake' de una campaña con los IDs de leads del mes."""
self.campaigns.update(campaign_airtable_id, {"Leads Lake": lead_ids})

5
run.py
View File

@ -81,8 +81,9 @@ def run():
print(f"📚 {campaign['curso']}") print(f"📚 {campaign['curso']}")
print(f" Campaign ID: {cid} | PPL: {campaign['ppl']}€ | Cap: {campaign['capping_mensual']} leads") print(f" Campaign ID: {cid} | PPL: {campaign['ppl']}€ | Cap: {campaign['capping_mensual']} leads")
# 1. Leads reales desde Airtable # 1. Leads reales desde Airtable + vincular en campo Leads Lake
leads = at.get_leads_this_month(campaign["cursoid_text"]) leads, lead_ids = at.get_leads_this_month(campaign["cursoid_text"])
at.update_campaign_leads_lake(campaign["airtable_id"], lead_ids)
# 2. Métricas de Google Ads # 2. Métricas de Google Ads
metrics = gads.get_campaign_metrics(cid) metrics = gads.get_campaign_metrics(cid)