gpt4 book ai didi

netsuite - 如何使用 Suitescript 2.0 在 netsuite 中设置 RESTlet 的日期

转载 作者:行者123 更新时间:2023-12-02 19:14:32 26 4
gpt4 key购买 nike

即使我发送了正确的格式,我在通过 RESTlet 创建电话事件时也遇到错误。

Invalid date value (must be M/D/YYYY)

它在 Suitescript 1.0 中运行良好。Phonecall 有许多标准日期字段,也可以有自定义日期字段。

如果需要将这些日期字段转换为 ReSTLet 中可接受的格式,需要识别所有日期和时间类型字段。

还有其他方法可以进行吗?

JSON

{
"title":"test",
"startdate":"01/08/2019",
"resourceType":"phonecall"
}

它在 suitescript 1.0 中运行良好

function post(datain) {
var record = nlapiCreateRecord(datain.resourceType);
for (var fieldname in datain) {
if (datain.hasOwnProperty(fieldname)) {
if (fieldname != 'resourceType' && fieldname != 'id') {
var value = datain[fieldname];
record.setFieldValue(fieldname, value);
}
}
}
var recordId = nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG', 'id=' + recordId);
var nlobj = nlapiLoadRecord(datain.resourceType, recordId);
return nlobj;
}

无法在 Suitescript 2.0 中工作

/**
*@NApiVersion 2.x
*@NScriptType Restlet
*/

define(['N/record'],function(record) {
function post(context) {
var resourceType = context.resourceType
delete context.resourceType
var objectRecord = record.create({
type: resourceType
});

for (var fldName in context) {
if (context.hasOwnProperty(fldName)) {
objectRecord.setValue(fldName, context[fldName]);
}
}
var createdId = objectRecord.save({});
return getById(resourceType, createdId);
}

function getById(resourceType, recordId) {
if (recordId != undefined) {
var response = record.load({
type: resourceType,
id: recordId
});

return response;
}
}
return {
post: post
};
});

最佳答案

SS2.0 中日期字段的

setValue() 需要 JavaScript 日期对象作为值而不是字符串。所以你可以这样做:

for (var fldName in context) {
if (context.hasOwnProperty(fldName)) {
if (fldName === 'startdate') {
objectRecord.setValue(fldname, new Date(context[fldName]));
}
objectRecord.setValue(fldName, context[fldName]);
}
}

您似乎正在尝试创建通用记录更新 API,因此可以检查字段名称是否“包含”日期,然后进行转换。

if (fldName.indexOf('date') >= 0) {
objectRecord.setValue(fldname, new Date(context[fldName]));
}

编辑:您可以在设置值之前进行一些字段类型检测:

var field = objectRecord.getField{ fieldId: fldName });
if (field.type === 'date') {
objectRecord.setValue(fldName, new Date(context[fldName]));
}

关于netsuite - 如何使用 Suitescript 2.0 在 netsuite 中设置 RESTlet 的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com