You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:15:08