Fix setup_airtable_meta_tables.py: UTF-8 stdout and idempotent re-runs
Windows console encoding crashed the script right after creating the first table; make it re-runnable by skipping tables that already exist instead of aborting entirely.
This commit is contained in:
parent
9239e2f67f
commit
f8cbd5f29e
@ -16,6 +16,8 @@ import sys
|
|||||||
import requests
|
import requests
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
TOKEN = os.environ.get("AIRTABLE_TOKEN", "")
|
TOKEN = os.environ.get("AIRTABLE_TOKEN", "")
|
||||||
@ -41,24 +43,30 @@ def create_table(name: str, fields: list) -> dict:
|
|||||||
|
|
||||||
existing = requests.get(META_URL, headers=HEADERS, timeout=15)
|
existing = requests.get(META_URL, headers=HEADERS, timeout=15)
|
||||||
existing.raise_for_status()
|
existing.raise_for_status()
|
||||||
existing_names = {t["name"] for t in existing.json().get("tables", [])}
|
existing_tables = {t["name"]: t for t in existing.json().get("tables", [])}
|
||||||
|
|
||||||
if "Meta Ads Campaigns" in existing_names or "MetaCampaignMes" in existing_names:
|
|
||||||
print("Error: 'Meta Ads Campaigns' or 'MetaCampaignMes' already exist in this base. Aborting.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
print(f"Creando tablas en la base {BASE_ID}...")
|
print(f"Creando tablas en la base {BASE_ID}...")
|
||||||
|
|
||||||
campaigns_table = create_table("Meta Ads Campaigns", [
|
if "Meta Ads Campaigns" in existing_tables:
|
||||||
{"name": "Campaign Name", "type": "singleLineText"},
|
campaigns_table = existing_tables["Meta Ads Campaigns"]
|
||||||
{"name": "CampaignID", "type": "singleLineText"},
|
print(f" = Table 'Meta Ads Campaigns' already exists (id={campaigns_table['id']}), skipping")
|
||||||
{"name": "CursoID Text", "type": "singleLineText"},
|
else:
|
||||||
{
|
campaigns_table = create_table("Meta Ads Campaigns", [
|
||||||
"name": "Status", "type": "singleSelect",
|
{"name": "Campaign Name", "type": "singleLineText"},
|
||||||
"options": {"choices": [{"name": "Activa"}, {"name": "Pausada"}]},
|
{"name": "CampaignID", "type": "singleLineText"},
|
||||||
},
|
{"name": "CursoID Text", "type": "singleLineText"},
|
||||||
{"name": "PPL", "type": "number", "options": {"precision": 2}},
|
{
|
||||||
])
|
"name": "Status", "type": "singleSelect",
|
||||||
|
"options": {"choices": [{"name": "Activa"}, {"name": "Pausada"}]},
|
||||||
|
},
|
||||||
|
{"name": "PPL", "type": "number", "options": {"precision": 2}},
|
||||||
|
])
|
||||||
|
|
||||||
|
if "MetaCampaignMes" in existing_tables:
|
||||||
|
print(f" = Table 'MetaCampaignMes' already exists (id={existing_tables['MetaCampaignMes']['id']}), skipping")
|
||||||
|
print("""
|
||||||
|
""" + "="*55 + "\n Nada que hacer: ambas tablas ya existen.\n" + "="*55)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
metacampaignmes_table = create_table("MetaCampaignMes", [
|
metacampaignmes_table = create_table("MetaCampaignMes", [
|
||||||
{"name": "Mes", "type": "singleLineText"},
|
{"name": "Mes", "type": "singleLineText"},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user