SuiteScript如何从国家列表获取国家ID用于已保存搜索过滤
问题原因
你脚本中custrecord_au_country是关联NetSuite标准国家记录的List/Record类型字段,Saved Search筛选这类关联字段时默认要求传入对应记录的内部ID,你传入的是「Estonia」这类国家名称字符串,类型不匹配所以触发报错。
解决方法
两种可选方案,优先推荐第二种:
方案1:先查询对应国家的内部ID,再代入原搜索
首先通过国家名称/代码查询对应的国家记录内部ID,再把ID传入原有搜索的筛选条件:
// 若你持有的是两位国家代码,把filters中的name字段替换为id即可 const countryId = search.create({ type: search.Type.COUNTRY, filters: [["name", "is", country]], columns: ["internalid"] }).run().getRange({start: 0, end: 1})?.[0]?.getValue("internalid"); if (countryId) { const search_htsCodes = search.create({ type: "customrecordau_test_codes", filters: [ ["custrecord_au_part_number.internalidnumber", "equalto", item], "AND", ["custrecord_au_country", "anyof", countryId] ], columns: [search.createColumn({name: "internalid", label: "ID"})] }); }
方案2:直接在原搜索中筛选关联国家的名称/代码属性
不需要额外发起搜索查询ID,直接通过关联字段的属性做筛选,执行效率更高,优先推荐:
const search_htsCodes = search.create({ type: "customrecordau_test_codes", filters: [ ["custrecord_au_part_number.internalidnumber", "equalto", item], "AND", // 若你持有的是两位国家代码,把name字段替换为id即可 ["custrecord_au_country.name", "is", country] ], columns: [search.createColumn({name: "internalid", label: "ID"})] });
注意事项
- NetSuite标准国家记录的
id字段存储的是两位ISO国家代码,如果你持有的是国家代码而非全称,把上述代码中的name替换为id即可正常匹配 - 若需要同时筛选多个国家,把筛选操作符从
is替换为anyof,传入对应的国家名称/代码数组即可
内容的提问来源于stack exchange,提问作者Davidna
相关产品推荐
相关产品推荐

