[英]How to debug SuiteScript 2.0 (RESTlet) in NetSuite Debugger?
[英]How to set date for RESTlet in netsuite with Suitescript 2.0
我在通過 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]));
}
我在自定義記錄的 beforeSubmit 事件中設置日期字段(使用 Javascript 日期對象作為值),並在 CSV 導入Invalid date value (must be M/D/YYYY).
得到相同的錯誤Invalid date value (must be M/D/YYYY).
經過大量的反復試驗,我能夠通過在 setValue 中添加 ignoreFieldChange: true 來設置日期值。
newRecord.setValue({ fieldId: key, value: new Date(), ignoreFieldChange: true });
(請注意,當我使用 CSV 導入導入自定義記錄並在 beforeSubmit UserEvent 函數中設置日期字段時,我收到此錯誤。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.