-
Notifications
You must be signed in to change notification settings - Fork 0
/
batch-company-to-contact-associate-contact-to-company-hubspot-custom-code-company-workflow.js
84 lines (68 loc) · 3.28 KB
/
batch-company-to-contact-associate-contact-to-company-hubspot-custom-code-company-workflow.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const hubspot = require('@hubspot/api-client');
exports.main = async (event, callback) => {
// Instantiate a new HubSpot API client using the HAPI key (secret)
const hubspotClient = new hubspot.Client({
accessToken: process.env.HUBSPOTTOKEN
});
// variable used for Company ID
const companyId = event.object.objectId;
// Retrive the currently enrolled companies "TC Company ID" property
hubspotClient.crm.companies.basicApi
.getById(companyId, ["tc_company_id", "oe_enrollment_calls_start_date", "oe_enrollment_calls_end_date", "oe_custom_email_series", "num_associated_contacts" ])
.then(results => {
// Get data from the results and store in variables
const tcCompanyID = results.properties.tc_company_id;
const numAssociatedContacts = results.properties.num_associated_contacts;
const pageTotal = numAssociatedContacts/100;
const newPageTotal = Math.round(pageTotal);
//console.log(newPageTotal);
//console.log("Company Record ID: " + companyId); // FOR DEBUG
//console.log("Company Property (TC Company ID): " + tcCompanyID); // FOR DEBUG
const oeCallStartDate = results.properties.oe_enrollment_calls_start_date;
const oeCallEndDate = results.properties.oe_enrollment_calls_end_date;
const oeCustomEmailSeries = results.properties.oe_custom_email_series;
// Create search criteria
const filter = { propertyName: 'company_id', operator: 'EQ', value: tcCompanyID }
const filterGroup = { filters: [filter] }
const sort = JSON.stringify({ propertyName: 'company_id', direction: 'DESCENDING'})
const properties = [ 'name', 'company_id', 'oe_enrollment_calls_start_date', 'oe_enrollment_calls_end_date', 'oe_custom_email_series_was_created' ]
const limit = 99
const after = newPageTotal
const searchCriteria = {
filterGroups: [filterGroup],
sorts: [sort],
properties,
limit,
after
}
// Search the CRM for Contact matching "CompanyID" variable defined earlier
hubspotClient.crm.contacts.searchApi.doSearch(searchCriteria).then(searchContactResponse => {
//let total_results = searchContactResponse.total;
//console.log("Total Results: " + total_results ); // FOR DEBUG
for (var k = 0; k < searchContactResponse.total; k++) {
let batch_contact_record_id = searchContactResponse.results[k].id;
//console.log("Contact Record ID: " + batch_contact_record_id ); // FOR DEBUG
hubspotClient.crm.contacts.basicApi.update(batch_contact_record_id, {"properties":{
"oe_enrollment_calls_start_date": oeCallStartDate,
"oe_enrollment_calls_end_date": oeCallEndDate,
"oe_custom_email_series_was_created": oeCustomEmailSeries
}});
hubspotClient.crm.companies.associationsApi.create(
companyId,
'contacts',
batch_contact_record_id,
[
{
"associationCategory": "HUBSPOT_DEFINED",
"associationTypeId": 2
}
]
);
}
});
callback({outputFields: {}});
})
.catch(err => {
console.error(err);
});
}