Importar empresas con Python

resolver
marcmm
Miembro

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

Soluciones aceptadas
Gonzalo
Solución
Colaborador líder

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 líder | Partner nivel Gold

 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
sharonlicari
Administrador de la comunidad

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 

 

 


¿Sabías que la Comunidad está disponible en Español?
¡Participa hoy en conversaciones en el idioma de tu preferencia,cambiando el idioma en tus configuraciones!

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

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 líder | Partner nivel Gold

 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