Mesclagem de Objetos
Este código personalizado mescla objetos do CRM com base em uma propriedade chave, a fim de evitar duplicatas.
Tecnologias Utilizadas
- Linguagem: JavaScript
- Bibliotecas: HubSpot API Client e Axios
Objeto de filtro para pesquisa:
Este objeto é utilizado como parâmetro para a pesquisa de objetos com o mesmo valor para a propriedade chave.
const PublicObjectSearchRequest = {
filterGroups: [{
"filters": [
{ "value": mergeCode, "propertyName": "codigo_de_mesclagem", "operator": "EQ" }
]
}]
};
Requisição de objetos a serem mesclados
Nesta etapa, é feita uma requisição ao hubspot para retornar objetos que correspondem ao filtro estabelecido na etapa anterior.
const apiResponse = await hubspotClient.crm.object.searchApi.doSearch(PublicObjectSearchRequest);
Mesclagem de Objetos
-
Requisição de Objetos: O script faz uma requisição à API do HubSpot para identificar objetos que correspondem ao filtro estabelecido.
-
Mesclagem de Duplicatas: Se mais de um objeto for identificado como duplicata, o script procede com a mesclagem desses objetos entre si.
if (apiResponse.total > 1) {
const duplicatesIds = apiResponse.results.map(el => parseInt(el.properties.hs_object_id)).filter(id => id != compId)
console.log(duplicatesIds);
// Iteração através das duplicatas para realizar a mesclagem
duplicatesIds.forEach(async duplicadoId => {
try {
await merge(compId, duplicadoId);
console.log(`Mesclagem concluída para os objetos ${compId} e ${duplicadoId}`);
} catch (error) {
console.error(`Erro durante a mesclagem dos objetos ${compId} e ${duplicadoId}:`, error);
}
});
}
- No início desse código, é declarada a constante "duplicatesIds", que recebe como valor os IDs dos objetos retornados pela requisição feita ao Hubspot.
- Em seguida, para cada duplicata encontrada é chamada a função "merge" que a mescla com o objeto que está passando pelo fluxo de trabalho.
Código completo:
//Iniciação do cliente hubspot
const hubspot = require('@hubspot/api-client');
const axios = require('axios');
const hubspotClient = new hubspot.Client({
accessToken: process.env.MERGEFULL
});
exports.main = async (event, callback) => {
const mergeCode = event.inputFields['codigo_de_mesclagem'];
const compId = event.inputFields['hs_object_id'];
const PublicObjectSearchRequest = {
filterGroups: [{
"filters": [
{ "value": mergeCode, "propertyName": "codigo_de_mesclagem", "operator": "EQ" }
]
}]
};
try {
// Requisição das empresas com base no filtro PublicObjectSearchRequest
const apiResponse = await hubspotClient.crm.companies.searchApi.doSearch(PublicObjectSearchRequest);
// Chamando a função para mesclar as empresas
if (apiResponse.total > 1) {
const duplicatesIds = apiResponse.results.map(el => parseInt(el.properties.hs_object_id)).filter(id => id != compId)
console.log(duplicatesIds);
duplicatesIds.forEach(async duplicadoId => {
try {
await merge(compId, duplicadoId);
console.log(`Mesclagem concluída para os objetos ${compId} e ${duplicadoId}`);
} catch (error) {
console.error(`Erro durante a mesclagem dos objetos ${compId} e ${duplicadoId}:`, error);
}
});
}
} catch (err) {
console.error(err);
throw err;
}
}
async function merge(primaryObjectId, objectIdToMerge) {
await axios.post(
'https://api.hubapi.com/crm/v3/objects/companies/merge',
{
primaryObjectId,
objectIdToMerge
},
{
headers: {
'Authorization': `Bearer ${process.env.MERGEFULL}`,
'Content-type': 'application/json',
},
},
);
}