Integraciones para Sales Hub

marcmm
Miembro

Importar empresas con Python

resolver

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()

 

 

0 Me gusta
2 Soluciones aceptadas
Gonzalo
Solución
Colaborador líder | Partner nivel Diamond
Colaborador líder | Partner nivel Diamond

Importar empresas con Python

resolver

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

 

If this answer helps you to solve your questions please mark it as a solution.

Thank you,


Gonzalo Torreras

HubSpot freelance developer

hola@gonzalotorreras.com
www.gonzalotorreras.com
Schedule a meeting

Ver la solución en mensaje original publicado

jpsanchez
Solución
Colaborador | Partner nivel Elite
Colaborador | Partner nivel Elite

Importar empresas con Python

resolver

 Hola,

 

Hasta donde yo se, 

Estas usando el ENDPOINT de importar que no se si te permite hacer esto ( no lo veo documentado en https://developers.hubspot.com/docs/api/crm/imports ).

 

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) https://developers.hubspot.com/docs/api/crm/companies ( 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

😉

Ver la solución en mensaje original publicado

3 Respuestas 3
jpsanchez
Solución
Colaborador | Partner nivel Elite
Colaborador | Partner nivel Elite

Importar empresas con Python

resolver

 Hola,

 

Hasta donde yo se, 

Estas usando el ENDPOINT de importar que no se si te permite hacer esto ( no lo veo documentado en https://developers.hubspot.com/docs/api/crm/imports ).

 

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) https://developers.hubspot.com/docs/api/crm/companies ( 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

😉

sharonlicari
Administrador de la comunidad
Administrador de la comunidad

Importar empresas con Python

resolver

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 

 

 


Did you know that the Community is available in other languages?
Join regional conversations by changing your language settings !




0 Me gusta
Gonzalo
Solución
Colaborador líder | Partner nivel Diamond
Colaborador líder | Partner nivel Diamond

Importar empresas con Python

resolver

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

 

If this answer helps you to solve your questions please mark it as a solution.

Thank you,


Gonzalo Torreras

HubSpot freelance developer

hola@gonzalotorreras.com
www.gonzalotorreras.com
Schedule a meeting