我正在尝试使用“已保存的搜索”来生成csv文件。我最大的问题是我有几个公式列。从查看API,我需要使用getValue()函数,该函数需要3个参数 - 名称,连接,摘要。我的问题是我不知道"名称"公式列的。通过SuiteScript IDE(Eclipse with Plugin),它向我展示了一个" getAllColumns()"应该返回列数组的函数。我也在本文档中找到了它:https://system.netsuite.com/app/common/scripting/nlapihandler.nl?downloadapi=T 但是,当我运行脚本时,我收到错误 " [L.nlobjSearchResult;"没有名为" getAllColumns"的公共实例字段或方法。"
以下是我的代码。关于如何轻松获取所有列的名称,包括公式,任何建议都会很棒。我有38列,所以如果可能的话,我们想要遍历它们而不只是做一个getValue(' name1')。
function gen_ven(){
var data = '';//this will contain all of the eventual data for this file
var sQF = '"', sDelim = ',';
var results = nlapiSearchRecord('vendor','customsearch_se_ven');
var columns = results.getAllColumns();
for(var i =0;i<results.length;i++)
{
for(var j = 0; j<columns.length; j++){
data += sQF + results[i].getValue(columns[j])+sQF+sDelim;
}
data += '\n';
}
var file = nlapiCreateFile('Vendor.csv', CSV, data);
response.setContentType(file.getType(), 'Vendor.csv');
response.write(file.getValue());
}
我也尝试过使用results.prototype.getAllColumns(),但这根本不起作用。
感谢您提供任何帮助
答案 0 :(得分:2)
您收到该错误的原因是getAllColumns()
是nlobjSearchResult
对象的成员,nlapiSearchRecord()
返回nlobjSearchResult
数组。
要使其发挥作用,只需使用results[index].getAllColumns()
。
答案 1 :(得分:1)
你可以使用nlobjSearchColumn的getName()函数并获取已保存搜索的标题
var start = function(request, response)
{
var searchId = "667";//a saved search internal id
var rec = nlapiLoadSearch('customer', searchId);//load that saved search
var columns = rec.getColumns();//get columns of it
var output = "";//the data for the csv file
var delimiter = ",";//delimiter for the csv file
for(var i in columns)
{
output += columns[i].getName() + delimiter ;//use the getname()
}
var folderId = '123';
var file = nlapiCreateFile('My New CSV', 'CSV', output);//save the file
file.setFolder(folderId);
nlapiSubmitFile(file);
response.write("done");
}