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:
parent
ec3802eccf
commit
2191a498d7
@ -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
5
run.py
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user