在Suitescript中,可以使用N/search
模块来创建和保存搜索。为了确保保存的搜索不重复,可以通过搜索名称来检查是否已存在同名的搜索,如果存在则删除它,然后再创建并保存新的搜索。
以下是一个示例代码:
/**
* 创建并保存不重复的搜索
* @param {string} searchName - 搜索名称
* @param {string} searchScriptId - 搜索脚本ID
* @param {string} searchRecordType - 搜索记录类型
* @param {Array} searchFilters - 搜索过滤器
* @param {Array} searchColumns - 搜索列
* @returns {number} - 新创建搜索的ID
*/
function createAndSaveUniqueSearch(searchName, searchScriptId, searchRecordType, searchFilters, searchColumns) {
var existingSearch = search.load({
id: searchScriptId
});
// 检查是否存在同名的搜索
var existingSearchId = search.lookupFields({
type: search.Type.SAVED_SEARCH,
columns: ['internalid'],
filters: [
['title', 'is', searchName]
]
});
if (existingSearchId && existingSearchId.internalid) {
// 删除同名的搜索
search.delete({
id: existingSearchId.internalid
});
}
// 创建新的搜索
var newSearch = search.create({
type: search.Type.SAVED_SEARCH,
title: searchName,
id: searchScriptId,
filters: searchFilters,
columns: searchColumns
});
// 保存搜索
var newSearchId = newSearch.save();
return newSearchId;
}
// 示例用法
var searchName = "My Unique Search";
var searchScriptId = "customsearch_my_unique_search";
var searchRecordType = search.Type.CUSTOMER;
var searchFilters = [
['entityid', 'contains', 'ABC'],
'AND',
['email', 'isnotempty', '']
];
var searchColumns = [
search.createColumn({
name: 'entityid',
sort: search.Sort.ASC
}),
search.createColumn({
name: 'email'
})
];
var newSearchId = createAndSaveUniqueSearch(searchName, searchScriptId, searchRecordType, searchFilters, searchColumns);
在上面的示例中,我们首先加载已存在的搜索(如果有的话),然后使用search.lookupFields
检查是否存在同名的搜索。如果存在,则使用search.delete
删除它。接下来,我们使用search.create
创建新的搜索,并使用save
方法保存它。最后,函数返回新创建搜索的ID。
请注意,search.ScriptId
参数是必需的,并且在保存搜索时将其指定为与脚本ID相同的值,以确保搜索与脚本绑定在一起。此外,创建搜索时,需要提供搜索的记录类型、过滤器和列。在示例中,我们创建了一个搜索,以查找实体ID包含"ABC"且电子邮件字段不为空的客户。
上一篇:不重复的随机数。初学者级别。
下一篇:不重复的行与求和