在SuiteScript中获取已保存搜索的列标题

时间:2014-06-13 14:50:31

标签: netsuite

我正在尝试使用“已保存的搜索”来生成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(),但这根本不起作用。

感谢您提供任何帮助

2 个答案:

答案 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");
}