2017-08-17 24 views
0

我正在使用套件腳本(API版本爲1.0)。我創建了一個保存在netsuite帳戶中的交易搜索。 現在我想將保存的搜索數據拖到我的數據庫中,但在此之前,只想列出映射屏幕上保存的搜索中存在的列。用suitescript保存搜索的Colums名稱

爲此,我寫了下面的腳本:

function GetColumnName() 
{ 
     var s = nlapiLoadSearch('transaction', 'customsearchtestsavedsearchwithcustfield'); 
     var columns = s.getColumns(); 
     return columns; 
} 

但在上面的代碼getColumns功能無法正常工作和NetSuite得到下述錯誤(錯誤沒有說太多)

TITLE 
**UNEXPECTED_ERROR** 
TYPE 
System 
DATE & TIME 
8/17/2017 4:34 am 
DETAILS 

任何一個可以請幫助我解決這個問題。

感謝

+0

什麼是你已經在這個保存的搜索設置的欄目? – erictgrubaugh

+0

帳戶,部門,金額和其他一些包括自定義細分,自定義主體字段 – user2626026

+0

今天我能夠在Netsuite調試器中調試我的腳本,並發現了一些關於錯誤的更多詳細信息,現在錯誤提示:UNEXPECTED_ERROR \t 2017/8/17 21:54 :25.887 \t ReferenceError:「nlapiLoadSearch」未定義。 (即席$ -1 $ debugger.user#26)。抱歉我的上述評論。錯誤只在SuiteScript 2.0中起作用,在SuiteScript 1.0中起作用。 – user2626026

回答

0

我相信這會給你你正在尋找的結果。只需傳入nlobjSearch對象,它就會返回一個Column名稱的數組。這被驗證爲功能性的,如果您仍然收到錯誤,那麼加載的搜索出現問題,您應該在UI中診斷此搜索。

function searchColTitles(search) { // search is the nlobjSearch from an nlapiLoadSearch(), or nlapiCreateSearch() 

var columns = []; 
var c; 
var cName; 
var columnNames = []; 


columns = search.getColumns(); 

for (c = 0; columns.length && c < columns.length; c += 1) { 
    cName = columns[c].label; 
    if (!cName) { 
     cName = columns[c].name; 
    } 
    columnNames.push(cName); 
} 

return columnNames; 

}

+0

謝謝,上面的腳本在SuiteScript 1.0中工作正常,但在2.0中它錯誤顯示「nlapiLoadSearch未定義」 – user2626026

+0

@ user2626026正確,任何以nlapi開頭的是1.0 api。對於2.0,您需要加載搜索模塊,然後使用search.loadSearch({options})。如果需要,請查閱幫助文檔以獲取更多關於2.0的信息。 –

+0

謝謝。我的netsuite腳本API級別爲1.0。所以當在1.0版本上調試netsuite的時候,它可以工作,但是當從我的示例c#應用程序中訪問我的已部署腳本時,給了我上面的錯誤信息。是否有一種方法可以知道當我從c#調用Restlet時使用哪個api netsuite? – user2626026