Olá @Brenner,
Bem testei o código acima e infelizmente não funcionou, vou tentar explicar de uma melhor forma o que eu quero fazer com a API do Hub:
Bem, quero pegar a associação e imprimi-la desta maneira, como se fosse feita manualmente na hora de exportar o CRM do Hub, ela deveria ficar assim na planilha:
Imprimindo a coluna no Hub.
Segue abaixo o Codigo ainda em desenvolvimento:
import requests
import os
import time
association_type_id = 1
# Configurações de exportação para diferentes tipos de objetos
export_configs = [
{
"objectType": "#COMPANY",
"objectProperties": \[
'hs\_object\_id',
'name',
'cnpj\_string',
'id\_tba',
'createdate',
'hs\_lastmodifieddate',
'agencia\_logbank',
'conta\_logbank',
'status\_conta\_logbank',
'preenchimento\_data\_conta\_logbank'
]
},
{
"objectType": "#TICKTES",
"associationCategory": "USER\_DEFINED",
"associatedObjectType": 28,
"objectProperties": \[
'subject',
'hs\_pipeline',
'hs\_pipeline\_stage',
'createdate',
'hs\_lastmodifieddate',
'solicitante',
'cpf\_ou\_cnpj\_do\_beneficiario',
'valor\_operacao',
'numero\_de\_parcelas',
'valor\_da\_parcela',
'qual\_o\_seu\_relacionamento\_com\_a\_tambasa\_atacadistas\_',
'tempo\_de\_relacionamento\_\_em\_meses\_'
]
},
{
"objectType": "CONTACT",
"associationTypeId": association\_type\_id,
"objectProperties": \[
'hs\_object\_id',
'firstname',
'lastname',
'cpf',
'cnpj',
'ida\_tba',
'createdate',
'lastmodifieddate',
'agencia\_logbank',
'conta\_logbank',
'status\_conta\_logbank',
'preenchimento\_data\_conta\_logbank',
'email',
"association\_label"
]
}
]
url = “https://api.hubapi.com/crm/v3/exports/export/async”
headers = {
"Authorization": "XXXXXXXX",
"Accept": "application/json",
"Content-Type": "application/json"
}
def start_export(config
data = {
"exportType": "VIEW",
"exportName": f"Exportação Automática de {config\['objectType']}",
"format": "xlsx",
"language": "PT\_BR",
"objectType": config\["objectType"],
"objectProperties": config\["objectProperties"],
}
association\_label = response.json().get("associationLabel")
print("Association Label:", association\_label)
response = requests.post(url, headers=headers, json=data)
if response.status\_code in (200, 201, 202😞
response\_data = response.json()
export\_id = response\_data.get("id")
print(f"Exportação para {config\['objectType']} iniciada com sucesso. ID: {export\_id}")
return export\_id
else:
print(f"Erro ao iniciar a exportação para {config\['objectType']}: {response.status\_code}, {response.text}")
return None
def check_download(export_id, config
status\_url = f"https://api.hubapi.com/crm/v3/exports/export/async/tasks/{export\_id}/status"
while True:
status\_response = requests.get(status\_url, headers=headers)
if status\_response.status\_code in (200, 201, 202😞
status\_data = status\_response.json()
export\_status = status\_data.get("status")
if export\_status == "COMPLETE":
export\_url = status\_data.get("result", "")
if export\_url:
file\_response = requests.get(export\_url)
if file\_response.status\_code in (200, 201, 202😞
directory = r"C:\Users\xxx\Desktop\Explore\_hub"
if not os.path.exists(directory):
os.makedirs(directory)
file\_path = os.path.join(directory, f"HubSpot\_{config\['objectType']}.xlsx")
with open(file\_path, 'wb') as file:
file.write(file\_response.content)
print(f"Arquivo baixado com sucesso e salvo em: {file\_path}")
else:
print(f"Erro ao baixar o arquivo: {config\['objectType']}, {file\_response.status\_code}")
else:
print("URL de download não encontrada.")
break
else:
print(f"Aguardando conclusão da exportação para {config\['objectType']}. Status: {export\_status}")
time.sleep(30)
if export\_status == "CANCELED":
print(f"Exportação cancelada {config\['objectType']}. Status: {export\_status}")
break
else:
print(f"Erro ao verificar o status da exportação para {config\['objectType']}: {status\_response.status\_code}")
break
# Executar exportação para cada configuração
for config in export_configs:
export\_id = start\_export(config)
if export\_id:
check\_download(export\_id, config)
O Codigo acima inicia a exportação dos CRM’s e verifica o status do mesmo, apos isso ele baixa o arquivos no diretorio desejado.