Importar empresas con Python

Con este codigo Python me funciona para crear empresas nuevas, pero si en el fichero CSV tengo registros que ya existen y se les ha modificado algun dato, querria que me lo actualizara y no lo hace.

import requests
import json
import csv

def import_companies():
post_url = “https://api.hubapi.com/crm/v3/imports?hapikey=YourHapikey
payload = {
“name”: “import_companies”,
“files”: [
{
“fileName”: “companies.csv”,
“fileformat”: “CSV”,
“fileImportPage”: {
“hasHeader”: True,
“columnMappings”: [
{
“ignored”: False,
“columnName”: “Nombre”,
“propertyName”: “name”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Dominio”,
“idColumnType”: “HUBSPOT_ALTERNATE_ID”,
“propertyName”: “domain”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Telefono”,
“propertyName”: “phone”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “CP”,
“propertyName”: “zip”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Direccion”,
“propertyName”: “address”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Poblacion”,
“propertyName”: “city”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Provincia”,
“propertyName”: “state”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Pais”,
“propertyName”: “country”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “Comercial”,
“propertyName”: “hubspot_owner_id”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
},
{
“ignored”: False,
“columnName”: “hs_object_id”,
“propertyName”: “hs_object_id”,
“columnObjectType”: “COMPANY”,
“associationIdentifierColumn”: False
}
]
}
}
]
}
files = {
‘importRequest’: (None, json.dumps(payload), ‘application/json’),
‘files’: open(‘companies.csv’, ‘rb’)
}
res = requests.post(post_url, files=files)
print(res)
print(res.text)

import_companies()

Hola @marcmm

¡Bienvenido a la Comunidad!

Creo que algunos de nuestros expertos pueden guidarte de cómo lograrlo.

Hola @jpsanchez @mangelet @Gonzalo ¿podrían compartir sus conociemientos con @marcmm?

Gracias

Sharon

Hola @marcmm y @sharonlicari ,

Para poder actualizar los datos de la compañia debes usar otros endpoints de la API:

Update (una a una): /crm/v3/objects/companies/{companyId}

Batch: /crm/v3/objects/companies/batch/update

Hubspot provee algunas librerías listas para usar, entre ellos con Python. Así que si utilizas dicha librería debería quedarte algo así:

import hubspot
from pprint import pprint
from hubspot.crm.companies import SimplePublicObjectInput, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

properties = {
 "city": "Cambridge",
 "domain": "biglytics.net",
 "industry": "Technology",
 "name": "Biglytics",
 "phone": "(877) 929-0687",
 "state": "Massachusetts"
}
simple_public_object_input = SimplePublicObjectInput(properties=properties)
try:
 api_response = client.crm.companies.basic_api.update(company_id="companyId", simple_public_object_input=simple_public_object_input)
 pprint(api_response)
except ApiException as e:
 print("Exception when calling basic_api->update: %s\n" % e)

Echa un vistazo a la documentación para más información.

Y aquí tienes el enlace al repositorio de la librería en python.

Un saludo,

Gonzalo

Hola,

Hasta donde yo se,

Estas usando el ENDPOINT de importar que no se si te permite hacer esto ( no lo veo documentado en Accounts Dashboard | HubSpot ).

Para comprobarlo te cuento:

Intenta esto:

- Revisa tu CSV y revisa si tienen nombre de dominio dentro de las columnas ( que es el identificador principal de EMPRESAS.

Revisa que tengas dicha empresa en HubSpot.

Ejecuta tu Python. Revisa si ha actualizado o no ( añadir) información a las empresas que ya tenías.

Si es que si, el problema estaba en como estabas indicando la relación en tu CSV de subida ( seguramente o estaba vacio el campo de dominio o con otro nombre) . Si no te lo ha actualizado, es que no se puede hacer.

En caso que no te funcione, solo se me ocurre hacer una concadenación usando primero los ENDPOINTS de buscar companies, para guardar si existe y así dividir la subida en los que ya estan y los que no usando cada ENDPOINT correspondiente ( CREATE y el OTRO UPDATE) Accounts Dashboard | HubSpot ( te dejo el link). Mira si fueran contactos ya existe un ENDPOINT que hace todo en uno. CREATE AND/OR UPDATE CONTACT.,

Si te puedo ayudar con algo + me dices!

Un saludo

JP

:wink: