如何在Netsuite中调用https.patch来更新Salesforce记录?

问题描述 投票:0回答:1

我正在尝试使用用户事件脚本更新 Salesforce 客户记录中的自定义“城市”字段。 salesforce 支持使用 Patch 更新记录,但 Netsuite 不支持。

我已经创建了用户事件脚本。但尝试了很多方法都没有更新记录。请帮忙!

define(['N/record', 'N/https', 'N/log'], function(record, https, log) {

function afterSubmit(context) {
    if (context.type === context.UserEventType.EDIT) {
        var city = 'Mumbai';
        var accessToken = '73475874586867u589487';

        try {
            // Update customer in Salesforce
            var salesforceResponse = updateSalesforceCustomer(accessToken, {
                City__c: city
            });
            log.debug("salesforceResponse", salesforceResponse);

            if (salesforceResponse.success) {
                log.debug("Customer Created in Salesforce", "Customer ID: " + salesforceResponse.id);
            } else {
                throw new Error('Failed to create customer in Salesforce: ' + JSON.stringify(salesforceResponse.error));
            }
        } catch (e) {
            log.error('Error creating customer in Salesforce', e.message);
        }
    }
}

function updateSalesforceCustomer(accessToken, updateData) {
    var response = https.post({
        url: 'https://dshcbshfvb-dev-ed.develop.my.salesforce.com/services/data/v61.0/sobjects/Customer/0o6dM00000008dVQAQ',
        headers: {
            'Authorization': 'Bearer ' + accessToken,
            'Content-Type': 'application/json',
            'X-HTTP-Method-Override': 'PATCH'
        },
        body: JSON.stringify(updateData)
    });

    var responseBody = JSON.parse(response.body);
    if (response.code === 201) {
        return {
            success: true,
            id: responseBody.id
        };
    } else {
        log.error('Error creating customer in Salesforce', responseBody);
        return {
            success: false,
            error: responseBody
        };
    }
}
rest salesforce netsuite suitescript suitescript2.0
1个回答
0
投票

Netsuite 不支持补丁。我已在 2023.3 尝试过

N/https.request
,因此 2024.1 或 2024.2 的尝试可能是值得的。

var response = https.request({method:'PATCH' ...

我最终所做的是使用

express-http-proxy
通过基于 Nodejs 的 Azure Web 应用程序代理我的调用。路由处理程序的相关部分如下:

const debug = require('debug')('ent:comm');

const requestProxy = require('express-http-proxy');


module.exports = requestProxy(process.env.TARGET_HOST,{
    memoizeHost: false,
    parseReqBody:true,
...
    proxyReqOptDecorator: function(proxyReqOpts, srcReq){



        if(srcReq.method == 'PUT'){
            if(srcReq.path.indexOf('cancel') != -1 || srcReq.path.indexOf('reactivate') != -1){
                proxyReqOpts.method = 'PATCH';
            }
        }

        debug(JSON.stringify(proxyReqOpts));
        return proxyReqOpts;
    },

...
});
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.