您好,请帮助我使用此 Google Apps 脚本功能,该功能可根据 Google 表格中的数据在 Pipedrive CRM 中创建新实体。该函数迭代工作表中的行,检索公司和人员的数据,检查该公司是否存在于 Pipedrive 中,如果不存在则创建该公司,然后创建与该公司关联的新人员。
您能否帮助我,提供完整的代码,该代码还将检查该人是否已经存在,而不是创建它。因此,此脚本不会在 pipelinedrive 中为公司和个人创建重复项。目前,使用下面的代码不会仅为公司创建重复项。
function createPipedriveEntity() {
var sheetId = ‘My sheet Id’; // Replace “My sheet Id” with the ID of your own spreadsheet
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(“Sheet name”); // Replace “Sheet name” with the name of your spreadsheet
var last_row = sheet.getLastRow();
for (var row = 2; row <= last_row; row++) { // Start from the second row
var company_name = sheet.getRange(‘AT’ + row).getValue();
var person_name = sheet.getRange(‘X’ + row).getValue();
var person_email = sheet.getRange(‘N’ + row).getValue();
var person_phone = sheet.getRange(‘FQ’ + row).getValue();
// Check if the company already exists in Pipedrive
var organizationExists = false;
var apiToken = "INSERT_YOUR_API_TOKEN_HERE";
var organizationsUrl = "https://api.pipedrive.com/v1/organizations/find?term=" + company_name + "&api_token=" + apiToken;
var organizationsResponse = UrlFetchApp.fetch(organizationsUrl);
var organizations = JSON.parse(organizationsResponse.getContentText()).data;
if (organizations.length > 0) {
organizationExists = true;
var company_id = organizations[0].id;
Logger.log("Company found: " + company_name + " (ID: " + company_id + ")");
}
// If the company does not exist, create it in Pipedrive
if (!organizationExists) {
var url = "https://api.pipedrive.com/v1/organizations?api_token=" + apiToken;
var payload = {
"name": company_name
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
var company = JSON.parse(response);
var company_id = company.data.id;
Logger.log("Company created: " + company_name + " (ID: " + company_id + ")");
}
// Add the person to the company
var url = "https://api.pipedrive.com/v1/persons?api_token=" + apiToken;
var payload = {
"name": person_name,
"email": person_email,
"phone": person_phone,
"org_id": company_id
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
var person = JSON.parse(response);
var person_id = person.data.id;
Logger.log("Person added: " + person_name + " (ID: " + person_id + ")");
}
}
我尽了一切努力,但我不是开发人员,我和我的新朋友 chatgpt 聊了几个小时。但我现在知道......只有人类才能帮助我解决这个问题。
非常感谢!
如果您仅使用名称进行搜索,这似乎有问题...可能需要考虑使用电子邮件或其他方式。
下面的内容未经测试,但应该可以帮助您...我已设置将人员 ID 更改为您在线列出的组织(如果此人存在但其组织为空或不同)。要关闭它,只需将顶部的值更改为 false。
const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet name');
const apiToken = "INSERT_YOUR_API_TOKEN_HERE";
const update_person_org = true;
function checkPerson(name) {
var personsUrl = 'https://api.pipedrive.com/v1/persons/search?&term='+name.replace(' ', '%20')+'&fields=name&exact_match=true&api_token='+apiToken;
Logger.log(personsUrl)
var personResponse = UrlFetchApp.fetch(personsUrl);
var persons = JSON.parse(personResponse.getContentText()).data.items;
if (persons.length > 0) {
person_org_id = '';
var first_person = persons[0]['item']
person_id = first_person.id;
if (first_person['organization']){person_org_id = first_person['organization']['id'];}
return {personExists: true, person_id: person_id, person_org_id: person_org_id};
}
else {return {personExists: false, person_id: '', person_org_id: ''};}
}
function UpdatePerson(person_id, data){
var url = 'https://api.pipedrive.com/v1/person/' + person_id+ '?api_token=' + apiToken;
// var data = { [field_name]: todays_date };
console.log(url);
var options = {
'method': 'put',
'contentType': 'application/json',
'payload': JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
return response.getResponseCode();
}
function createPipedriveEntity() {
// var sheetId = ‘My sheet Id’; // Replace “My sheet Id” with the ID of your own spreadsheet
// var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(“Sheet name”); // Replace “Sheet name” with the name of your spreadsheet
var last_row = sheet.getLastRow();
for (var row = 2; row <= last_row; row++) { // Start from the second row
var company_name = sheet.getRange("AT" + row).getValue();
var person_name = sheet.getRange("X" + row).getValue();
var person_email = sheet.getRange("N" + row).getValue();
var person_phone = sheet.getRange("FQ" + row).getValue();
// Check if the company already exists in Pipedrive
var organizationExists = false;
var organizationsUrl = "https://api.pipedrive.com/v1/organizations/find?term=" + company_name + "&api_token=" + apiToken;
var organizationsResponse = UrlFetchApp.fetch(organizationsUrl);
var organizations = JSON.parse(organizationsResponse.getContentText()).data;
if (organizations.length > 0) {
organizationExists = true;
var company_id = organizations[0].id;
Logger.log("Company found: " + company_name + " (ID: " + company_id + ")");
}
// If the company does not exist, create it in Pipedrive
else {
var url = "https://api.pipedrive.com/v1/organizations?api_token=" + apiToken;
var payload = {
"name": company_name
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
var company = JSON.parse(response);
var company_id = company.data.id;
Logger.log("Company created: " + company_name + " (ID: " + company_id + ")");
}
if (person_name && company_id) {
var personCheck= checkPersonExists(person_name);
Logger.log("Person Check: " + personCheck);
// Add the person to the company
if (!personCheck['personExists']) {
var url = "https://api.pipedrive.com/v1/persons?api_token=" + apiToken;
var payload = {
"name": person_name,
"email": person_email,
"phone": person_phone,
"org_id": company_id
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
var person = JSON.parse(response);
var person_id = person.data.id;
Logger.log("Person added: " + person_name + " (ID: " + person_id + ")");
}
// If you have update_person_org set to true + the person was found but has either no org id or the org id is different --> update the persons org to the company id
else
if (update_person_org && personCheck['personExists'] && personCheck['person_or g_id'] != company_id) {
Logger.log('Updating Person Org from ' + person_org + ' to ' + company_id)
var person_update = {id: person_id, org_id: company_id};
var putResponse = UpdatePerson(person_id, person_update);
Logger.log('Person Update Response Code: ' + putResponse);
}
}
}
}