【问题标题】:Getting Column Headers of a Saved Search in SuiteScript在 SuiteScript 中获取已保存搜索的列标题
【发布时间】:2014-06-13 14:50:31
【问题描述】:

我正在尝试利用已保存的搜索来生成 csv 文件。我最大的问题是我有几列是公式。通过查看 API,我需要使用 getValue() 函数,它需要 3 个参数 - 名称、连接、摘要。我的问题是我不知道公式列的“名称”。通过 SuiteScript IDE(带有插件的 Eclipse),它向我展示了一个“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() 但这根本不起作用。

感谢您提供的任何帮助

【问题讨论】:

    标签: netsuite


    【解决方案1】:

    您收到该错误的原因是因为getAllColumns()nlobjSearchResult 对象的成员,而nlapiSearchRecord() 返回一个nlobjSearchResult 数组。

    要让它工作,只需使用results[index].getAllColumns()

    【讨论】:

    • 谢谢!运行之后,我得到了另一个错误。我从文档中获取了基本代码:netsuite.custhelp.com/app/answers/detail/a_id/14565 他们认为它是作为 Suitelet 脚本完成的,但从未在文档中提及它。 “响应”指的是 Suitelet 的参数。我作为预定脚本运行,所以我只需要将响应代码替换为:file.setFolder(27); var id = nlapiSubmitFile(file);
    【解决方案2】:

    您可以使用 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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 2017-07-13
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多