关键点是要在NetSuite中创建一个基于File的Saved Search,然后在SuiteScript中通过Search模块的search.load({id:<SavedSearchId>}), 配合Filter得到相应的File记录信息。示例代码如下:
/**
*@NApiVersion 2.x
*@NScriptType Suitelet
*@Author Yi
*@Desc Test getting meta data of a file.
*/
function isObject(mixed){
return typeof mixed === 'object' && mixed !== null;
}
define(['N/search'],
function(search){
function debug(msg){
log.debug({
title: 'Suitelet debug',
details: isObject(msg) ? JSON.stringify(msg) : msg
});
}
function getFileMetaData(search, fileId){
var filter = search.createFilter({
name: 'internalid',//字段名
operator: search.Operator.IS, //注意操作方法是IS,不是EQUALTO
values: [fileId]
});//可以根据需求,创建多个Filter
var searchObj = search.load({
'id': 'customsearch2236' // Saved search id
});
searchObj.filters.push(filter);
var resultSet = searchObj.run().getRange({start:0, end:1});//只取一行记录
if (resultSet && resultSet.length > 0) {
var data = resultSet[0];
var output = {
fileName: data.getValue({name: 'name'}),
fileCreated: data.getValue({name: 'created'}),
fileModified: data.getValue({name: 'modified'}),
fileType: data.getValue({name: 'filetype'}),
fileFolder: {id: data.getValue({name: 'folder'}), text: data.getText({name: 'folder'})},
fileOwner: {id: data.getValue({name: 'owner'}), text: data.getText({name: 'owner'})}
};
return output;
}
return null;
}
function onRequest(context){
try {
var request = context.request;
var response = context.response;
if (request.method === 'GET') {
var fileId = request.parameters.fileid;
if (fileId > 0) {
var output = getFileMetaData(search, fileId);
if (output) {
return response.write(JSON.stringify(output));
}
}
response.write('empty result');
} else {
response.write('method error.');
}
} catch(e) {
debug(e);
context.response.write({
output: isObject(e) ? JSON.stringify(e) : e
});
}
}
return {
onRequest: onRequest
};
}
);