如何通过 NetSuite 更新 Salesforce?
How to update Salesforce through NetSuite?
您将如何使用 NetSuite 数据更新 Salesforce?
我知道您需要使用 Suitescript 2.0 和某种令牌身份验证。
我有一个 suitescript 2.0 用户事件脚本就是这样做的,它连接到 salesforce 并将 netsuite 客户字段更新到 salesforce 帐户。
该脚本将更新 salesforce 帐户上的三个自定义字段:NSID、sync、syntime。
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*/
define(['N/https', 'N/search', 'N/record'],
function (https, search, record)
{
_HTTPS = https;
_SEARCH = search;
_RECORD = record;
//handle after submition of customer on create and edit
function afterSubmit(context)
{
var body;
var NSID;
var sfEntityID;
var sync;
var syncTime;
var accountURL;
var response;
var recordData = {};
//If customer is getting deleted reflect that to SF
if(context.type === "delete")
NSID = 'deleted';
else
NSID = context.newRecord.id;
//get the SF account ID
sfEntityID = context.newRecord.getValue({fieldId:"custentity_sf_account_id"});
if (sfEntityID == undefined || sfEntityID == "") //If there is no SFID stop
{
log.debug("afterSubmit","No sfEntityID on customer with NSID: " + NSID);
return;
}
var date = new Date();
var month = date.getUTCMonth() + 1; // jan = 0
if (month < 10)
{
month = "0" + month;
}
syncTime = date.getUTCFullYear() + '-' + month + '-' + date.getUTCDate() + 'T' + date.getUTCHours() + ':' + date.getUTCMinutes() + ':' + date.getUTCSeconds() + '.000Z';
//login to SF (loginSalesforceNLAP controls sandbox/production login)
body = loginSalesforceNLAP();
//check if I got an access token back
if(body.access_token == undefined || body.access_token == "")
{
log.debug('afterSubmit','could not get SF access token');
return;
}
//set fields that will be updated on SF account
recordData.Netsuite_Internal_ID__c = NSID;
recordData.Sync__c = true;
recordData.Synced_Time__c = syncTime;
recordData = JSON.stringify(recordData);
//send update request
response = _HTTPS.post({
url: (getURL(body) + "/sobjects/Account/" + sfEntityID + "?_HttpMethod=PATCH"),
body: recordData,
headers: {"Authorization": "OAuth " + body.access_token,"Content-Type": "application/json"}
});
log.debug("response",response);
//log an error if it occurred
if(response.code != 204)
{
log.debug("afterSubmit","Could not update sf Account: " + sfEntityID + ' NSID: ' + NSID);
return;
}
//success message
log.debug("afterSubmit","successfully updated sf Account: " + sfEntityID + ' NSID: ' + NSID);
return;
}
return {afterSubmit: afterSubmit};
});
//get max SF version for SF update request
function getURL(body)
{
var max
var arr
var header = {"Authorization": "OAuth " + body.access_token };
var recordData = {};
var url = body.instance_url + "/services/data/";
response = _HTTPS.get({
url: url,
body: recordData,
headers: header
});
if(response.code == 200 || response.code == 204)
{
arr = JSON.parse(response.body)
for(var i = 0; i < arr.length; i++)
{
//find max version
if(!max || parseInt(arr[i]["version"]) > parseInt(max["version"]))
max = arr[i];
}
return body.instance_url + max.url;
}
else
return "";
}
//Connect to Salesforce instance and obtain the Access Token used for subsequent Salesforce calls this session
function loginSalesforceNLAP()
{
//production
var clientID = "3MVG9QDx8IX8nP5SpP0endmsendmeMepopopBvuB074i_7h7fakehoB0hnnhK7FyfTUgxH2234vR6QPoVXpDE";
var clientSecret = "1231232320412308455";
var securityToken = "N0bx9dI321F732aO12iC33gm6";
var username = "sflogin@login.com";
var password = "password";
var loginURL = "https://login.salesforce.com/services/oauth2/token";
var header = [];
header['Content-Type'] = 'application/json;charset=UTF-8';
var recordData = {};
var url = loginURL + "?grant_type=password&client_id=" + clientID + "&client_secret=" + clientSecret + "&username=" + username + "&password=" + password + securityToken;
try
{
response = _HTTPS.post({
url: url,
body: recordData,
headers: header
});
response = JSON.parse(JSON.stringify(response));
if (response.code == 200 || response.code == 204)
return JSON.parse(response.body); //return body
}
catch (er02)
{
log.error('ERROR:loginSalesforceNLAP', er02);
}
return "";
}
为了获取 clientID、clientSecret 和安全令牌,请按照以下步骤操作:https://developer.salesforce.com/forums/?id=906F0000000AfcgIAC
您将如何使用 NetSuite 数据更新 Salesforce? 我知道您需要使用 Suitescript 2.0 和某种令牌身份验证。
我有一个 suitescript 2.0 用户事件脚本就是这样做的,它连接到 salesforce 并将 netsuite 客户字段更新到 salesforce 帐户。
该脚本将更新 salesforce 帐户上的三个自定义字段:NSID、sync、syntime。
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*/
define(['N/https', 'N/search', 'N/record'],
function (https, search, record)
{
_HTTPS = https;
_SEARCH = search;
_RECORD = record;
//handle after submition of customer on create and edit
function afterSubmit(context)
{
var body;
var NSID;
var sfEntityID;
var sync;
var syncTime;
var accountURL;
var response;
var recordData = {};
//If customer is getting deleted reflect that to SF
if(context.type === "delete")
NSID = 'deleted';
else
NSID = context.newRecord.id;
//get the SF account ID
sfEntityID = context.newRecord.getValue({fieldId:"custentity_sf_account_id"});
if (sfEntityID == undefined || sfEntityID == "") //If there is no SFID stop
{
log.debug("afterSubmit","No sfEntityID on customer with NSID: " + NSID);
return;
}
var date = new Date();
var month = date.getUTCMonth() + 1; // jan = 0
if (month < 10)
{
month = "0" + month;
}
syncTime = date.getUTCFullYear() + '-' + month + '-' + date.getUTCDate() + 'T' + date.getUTCHours() + ':' + date.getUTCMinutes() + ':' + date.getUTCSeconds() + '.000Z';
//login to SF (loginSalesforceNLAP controls sandbox/production login)
body = loginSalesforceNLAP();
//check if I got an access token back
if(body.access_token == undefined || body.access_token == "")
{
log.debug('afterSubmit','could not get SF access token');
return;
}
//set fields that will be updated on SF account
recordData.Netsuite_Internal_ID__c = NSID;
recordData.Sync__c = true;
recordData.Synced_Time__c = syncTime;
recordData = JSON.stringify(recordData);
//send update request
response = _HTTPS.post({
url: (getURL(body) + "/sobjects/Account/" + sfEntityID + "?_HttpMethod=PATCH"),
body: recordData,
headers: {"Authorization": "OAuth " + body.access_token,"Content-Type": "application/json"}
});
log.debug("response",response);
//log an error if it occurred
if(response.code != 204)
{
log.debug("afterSubmit","Could not update sf Account: " + sfEntityID + ' NSID: ' + NSID);
return;
}
//success message
log.debug("afterSubmit","successfully updated sf Account: " + sfEntityID + ' NSID: ' + NSID);
return;
}
return {afterSubmit: afterSubmit};
});
//get max SF version for SF update request
function getURL(body)
{
var max
var arr
var header = {"Authorization": "OAuth " + body.access_token };
var recordData = {};
var url = body.instance_url + "/services/data/";
response = _HTTPS.get({
url: url,
body: recordData,
headers: header
});
if(response.code == 200 || response.code == 204)
{
arr = JSON.parse(response.body)
for(var i = 0; i < arr.length; i++)
{
//find max version
if(!max || parseInt(arr[i]["version"]) > parseInt(max["version"]))
max = arr[i];
}
return body.instance_url + max.url;
}
else
return "";
}
//Connect to Salesforce instance and obtain the Access Token used for subsequent Salesforce calls this session
function loginSalesforceNLAP()
{
//production
var clientID = "3MVG9QDx8IX8nP5SpP0endmsendmeMepopopBvuB074i_7h7fakehoB0hnnhK7FyfTUgxH2234vR6QPoVXpDE";
var clientSecret = "1231232320412308455";
var securityToken = "N0bx9dI321F732aO12iC33gm6";
var username = "sflogin@login.com";
var password = "password";
var loginURL = "https://login.salesforce.com/services/oauth2/token";
var header = [];
header['Content-Type'] = 'application/json;charset=UTF-8';
var recordData = {};
var url = loginURL + "?grant_type=password&client_id=" + clientID + "&client_secret=" + clientSecret + "&username=" + username + "&password=" + password + securityToken;
try
{
response = _HTTPS.post({
url: url,
body: recordData,
headers: header
});
response = JSON.parse(JSON.stringify(response));
if (response.code == 200 || response.code == 204)
return JSON.parse(response.body); //return body
}
catch (er02)
{
log.error('ERROR:loginSalesforceNLAP', er02);
}
return "";
}
为了获取 clientID、clientSecret 和安全令牌,请按照以下步骤操作:https://developer.salesforce.com/forums/?id=906F0000000AfcgIAC