Retrieve Saved Search Column Names from NetSuite
1. Create the SuiteScript file
get_saved_search_columns_restlet.js/**
* Returns column definitions for a saved search.
*
* @NApiVersion 2.1
* @NScriptType Restlet
* @NModuleScope SameAccount
*/
define(["N/search", "N/log"], (search, log) => {
/**
* Safely converts a SuiteScript property to a plain string or null.
*/
const safeString = (value) => {
if (value === null || value === undefined || value === "") {
return null;
}
return String(value);
};
const get = (request) => {
try {
const savedSearchId = safeString(request.savedSearchId);
if (!savedSearchId) {
return JSON.stringify({
success: false,
error: "savedSearchId is required",
});
}
log.audit({
title: "RESTlet request",
details: `savedSearchId=${savedSearchId}`,
});
const savedSearch = search.load({
id: savedSearchId,
});
log.audit({
title: "Saved search loaded",
details: `Column count=${savedSearch.columns.length}`,
});
/*
* Explicitly convert every SuiteScript value into a primitive.
* This prevents NetSuite from trying to serialize SuiteScript
* enum values or internal objects.
*/
const columns = savedSearch.columns.map((column, index) => ({
position: index + 1,
name: safeString(column.name),
label: safeString(column.label),
join: safeString(column.join),
summary: safeString(column.summary),
formula: safeString(column.formula),
sort: safeString(column.sort),
}));
const response = {
success: true,
savedSearchId,
columnCount: columns.length,
columns,
};
/*
* Return an explicit JSON string instead of allowing NetSuite
* to serialize the object automatically.
*/
return JSON.stringify(response);
} catch (exception) {
const failure = {
success: false,
errorName: safeString(exception.name),
errorMessage: safeString(exception.message),
stack: safeString(exception.stack),
};
log.error({
title: "RESTlet failure",
details: JSON.stringify(failure),
});
return JSON.stringify(failure);
}
};
return { get };
});2. Open the SuiteScripts folder

3. Upload the SuiteScript file


4. Create a new script

5. Select the uploaded file


6. Configure the script record
Field
Value

7. Deploy the script

8. Configure the deployment
Field
Value


Troubleshooting
The script file does not appear
The RESTlet returns an authorization error
Last updated