我的问题有了更新。 我真正想知道的是: 如何将csv数据导入netsuite? 好吧,似乎我使用csv导入工具来创建一个映射,并使用这个调用来导入csv nlapiSubmitCSVImport(nlobjCSVImport)。
现在我的问题是:如何遍历对象?! 这让我走了一半 - 我得到了csv数据,但我似乎无法找出如何迭代它以操纵日期。当然,这是预定脚本的重点。
这真让我生气。
@Robert H. 我可以想到为什么要从CSV导入数据的一百万个原因。比如,例如。关于任何公司保留的数据的各种报告,我不想将其保留在文件柜中,我也不想真正保留文件。我只想要数据。我想操纵它,我想输入它。
答案 0 :(得分:3)
解决方案步骤:
要上传CSV文件,我们必须使用Suitelet脚本。
(注意:file
- 此字段类型仅适用于Suitelet,并显示在Suitelet页面的主选项卡上。将字段类型设置为文件会在页面中添加文件上传窗口小部件。)
var fileField = form.addField('custpage_file', 'file', 'Select CSV File');
var id = nlapiSubmitFile(file);
让我们准备调用Restlet脚本并将文件ID传递给它。
var recordObj = new Object();
recordObj.fileId = fileId;
// Format input for Restlets for the JSON content type
var recordText = JSON.stringify(recordObj);//stringifying JSON
// Setting up the URL of the Restlet
var url = 'https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=108&deploy=1';
// Setting up the headers for passing the credentials
var headers = new Array();
headers['Content-Type'] = 'application/json';
headers['Authorization'] = 'NLAuth nlauth_email=amit.kumar2@mindfiresolutions.com, nlauth_signature=*password*, nlauth_account=TSTDRV****, nlauth_role=3';
(注意:nlapiCreateCSVImport
:此API仅支持捆绑软件安装脚本,计划脚本和RESTlet)
让我们使用nlapiRequestURL
调用Restlet:
// Calling Restlet
var output = nlapiRequestURL(url, recordText, headers, null, "POST");
使用Setup>提供的导入CSV记录创建映射。导入/导出>导入CSV记录。
Restlet脚本内部从Restlet参数中获取文件ID。使用nlapiCreateCSVImport()
API并使用在步骤3中创建的映射ID设置其映射。使用setPrimaryFile()
函数设置CSV文件。
var primaryFile = nlapiLoadFile(datain.fileId);
var job = nlapiCreateCSVImport();
job.setMapping(mappingFileId); // Set the mapping
// Set File
job.setPrimaryFile(primaryFile.getValue()); // Fetches the content of the file and sets it.
使用nlapiSubmitCSVImport()
提交。
nlapiSubmitCSVImport(job); // We are done
我们可以通过另一种方式解决这个问题,虽然既不优选也不建议。(因为如果您的CSV文件中有大量记录,它会消耗大量的API。)< / p>
假设我们不想使用nlapiCreateCSVImport
API,那么让我们从第4步继续。
只需像我们之前那样获取文件ID,加载文件并获取其内容。
var fileContent = primaryFile.getValue();
拆分文件的行,然后拆分单词并将值存储到单独的数组中。
var splitLine = fileContent.split("\n"); // Splitting the file on the basis of lines.
for (var lines = 1,count=0; lines < splitLine.length; lines++)
{
var words = (splitLine[lines]).split(","); // words stores all the words on a line
for (var word = 0; word < words.length; word++)
{
nlapiLogExecution("DEBUG", "Words:",words[word]);
}
}
注意:确保CSV文件中没有其他空行。
最后从我们在上面创建的数组中创建记录并设置字段值。
var myRec = nlapiCreateRecord('cashsale'); // Here you create the record of your choice
myRec.setFieldValue('entity', arrCustomerId[i]); // For example, arrCustomerId is an array of customer ID.
var submitRec = nlapiSubmitRecord(myRec); // and we are done
答案 1 :(得分:0)
使用CSVImport对象的文档,我可以提供更多帮助。
P.S。我尝试将此消息作为评论发布,但“添加评论”链接由于某种原因未显示。 SOF还是新手
答案 2 :(得分:0)
CSV到JSON:
如果您知道CSV文件的结构,只需执行for循环并将字段映射到相应的nlapiSetValue。
应该非常简单。