如何使用 SuiteScript 从位置记录中获取地址字段
How to get the fields of an address from a location record using SuiteScript
上下文:用 SuiteScript v1 编写的 RESTlet,但如果必须的话,我会使用 v2。
重要提示:解决方案必须在服务器端运行。
位置记录有一个标题为主要地址的字段。字段 ID 为 mainaddress_text.
当我使用 NetSuite 网站编辑主地址字段时,它会向我显示带有普通地址字段的普通地址编辑表单,因此 NetSuite 存储地址的方式与地址一样,例如,客户记录,在名为 Country、Attention、Addressee、Phone 等字段中
我想获取这些字段的值,但不知道如何获取。
我已经使用
加载了位置
location = nlapiLoadRecord('location', locationid)
架构浏览器 (https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/schema/record/location.html) 建议有一个名为 mainAddress 的字段,类型为 Address。
我尝试使用如下语句访问 mainAddress 字段:
location.getField('mainaddress') //returns null
location.getSubList('mainaddress') //returns null
location.getLineItemCount('mainaddress') //returns -1
location.getFieldValue('mainaddress') //returns null
location.getFieldText('mainaddress') //returns null
但是没有成功。
我也试过 location.getLineItemCount('addressbook')
以防客户记录中有一个名为 like 的字段但返回 -1。
记录浏览器 (https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/script/record/location.html) 提示有一个名为 addrtext 的字段,类型为 Address。
我尝试使用如下语句访问 addrtext 字段:
location.getField('addrtext') //returns null
location.getSubList('addrtext') //returns null
location.getLineItemCount('addrtext') //returns -1
location.getFieldValue('addrtext') //returns null
location.getFieldText('addrtext') //returns null
但是没有成功。
记录浏览器还描述了名为 addr1、addr2、addr3、收件人、关注、城市等的字段。
我尝试使用如下语句访问这些字段:
location.getFieldValue('attention') //returns null
location.getFieldValue('addressee') //returns null
location.getFieldValue('addr1') //returns null
location.getFieldValue('addr2') //returns null
location.getFieldValue('addr3') //returns null
location.getFieldValue('city') //returns null
location.getFieldValue('state') //returns null
location.getFieldValue('country') //returns null
但是没有成功。
我发现获取地址数据的唯一方法是使用 location.getFieldValue('mainaddress_text')
,但是 returns 地址作为一个字符串,地址的各个部分由 <br>
- 分隔令牌。
如何获取个人地址字段?
我建议使用 JSON.stringify(location)
将记录字符串化以查看其中的内容。地址字段通常存储在 addr1 等...
地址字段可能不是从 UI 中设置的。我见过一些只设置 mainaddress_text 字段的脚本,但也忽略了更改各个字段,这会导致长 运行 出现问题,因为 mainaddress_text 与其他地址字段不匹配(地址 1、地址 2 等...)。
您可能想尝试搜索地址字段,以下是在 SS 1.0 中的搜索方法:
var locationSearch = nlapiSearchRecord("location", null,
[
["internalid", "anyof", "2"] //Change internal id
],
[
new nlobjSearchColumn("attention", 'address', null),
new nlobjSearchColumn("addressee", 'address', null),
new nlobjSearchColumn("address1", null, null),
new nlobjSearchColumn("address2", null, null),
new nlobjSearchColumn("address3", null, null),
new nlobjSearchColumn("city", null, null),
new nlobjSearchColumn("state", null, null),
new nlobjSearchColumn("country", null, null),
new nlobjSearchColumn("zip", null, null),
new nlobjSearchColumn("phone", null, null)
]
);
if (results)
{
var result = results[0];
return {
attention: result.getValue('attention', 'address'),
addressee: result.getValue('addressee', 'address'),
address1: result.getValue('address1'),
address2: result.getValue('address2'),
address3: result.getValue('address3'),
city: result.getValue('city'),
state: result.getValue('state'),
country: result.getValue('country'),
zip: result.getValue('zip'),
phone: result.getValue('phone')
};
}
试一试:
nlapiLoadRecord("location", locationID, {recordmode: "dynamic"})
.viewSubrecord("mainaddress")
.getFieldValue('addrtext');
我在浏览器中打开了一个 Location 记录,然后从那里打开了一个控制台来加载 nlobjRecord。查看字段,我看到有一个 mainaddress2_set
字段由 nlapiViewSubrecord("mainaddress")
设置
我无法从客户端控制台调用 viewSubrecord("mainaddress")
,但我确实创建了一个简单的 suitelet 来加载位置记录并打印地址。
function GET(request, response){
var r = nlapiLoadRecord("location", "123456", {recordmode: "dynamic"});
response.write(r.viewSubrecord("mainaddress").getFieldValue('addrtext'));
response.write(r.viewSubrecord("mainaddress").getFieldValue('addr1'));
// etc.
}
上下文:用 SuiteScript v1 编写的 RESTlet,但如果必须的话,我会使用 v2。
重要提示:解决方案必须在服务器端运行。
位置记录有一个标题为主要地址的字段。字段 ID 为 mainaddress_text.
当我使用 NetSuite 网站编辑主地址字段时,它会向我显示带有普通地址字段的普通地址编辑表单,因此 NetSuite 存储地址的方式与地址一样,例如,客户记录,在名为 Country、Attention、Addressee、Phone 等字段中
我想获取这些字段的值,但不知道如何获取。
我已经使用
加载了位置location = nlapiLoadRecord('location', locationid)
架构浏览器 (https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/schema/record/location.html) 建议有一个名为 mainAddress 的字段,类型为 Address。
我尝试使用如下语句访问 mainAddress 字段:
location.getField('mainaddress') //returns null
location.getSubList('mainaddress') //returns null
location.getLineItemCount('mainaddress') //returns -1
location.getFieldValue('mainaddress') //returns null
location.getFieldText('mainaddress') //returns null
但是没有成功。
我也试过 location.getLineItemCount('addressbook')
以防客户记录中有一个名为 like 的字段但返回 -1。
记录浏览器 (https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/script/record/location.html) 提示有一个名为 addrtext 的字段,类型为 Address。
我尝试使用如下语句访问 addrtext 字段:
location.getField('addrtext') //returns null
location.getSubList('addrtext') //returns null
location.getLineItemCount('addrtext') //returns -1
location.getFieldValue('addrtext') //returns null
location.getFieldText('addrtext') //returns null
但是没有成功。
记录浏览器还描述了名为 addr1、addr2、addr3、收件人、关注、城市等的字段。
我尝试使用如下语句访问这些字段:
location.getFieldValue('attention') //returns null
location.getFieldValue('addressee') //returns null
location.getFieldValue('addr1') //returns null
location.getFieldValue('addr2') //returns null
location.getFieldValue('addr3') //returns null
location.getFieldValue('city') //returns null
location.getFieldValue('state') //returns null
location.getFieldValue('country') //returns null
但是没有成功。
我发现获取地址数据的唯一方法是使用 location.getFieldValue('mainaddress_text')
,但是 returns 地址作为一个字符串,地址的各个部分由 <br>
- 分隔令牌。
如何获取个人地址字段?
我建议使用 JSON.stringify(location)
将记录字符串化以查看其中的内容。地址字段通常存储在 addr1 等...
地址字段可能不是从 UI 中设置的。我见过一些只设置 mainaddress_text 字段的脚本,但也忽略了更改各个字段,这会导致长 运行 出现问题,因为 mainaddress_text 与其他地址字段不匹配(地址 1、地址 2 等...)。
您可能想尝试搜索地址字段,以下是在 SS 1.0 中的搜索方法:
var locationSearch = nlapiSearchRecord("location", null,
[
["internalid", "anyof", "2"] //Change internal id
],
[
new nlobjSearchColumn("attention", 'address', null),
new nlobjSearchColumn("addressee", 'address', null),
new nlobjSearchColumn("address1", null, null),
new nlobjSearchColumn("address2", null, null),
new nlobjSearchColumn("address3", null, null),
new nlobjSearchColumn("city", null, null),
new nlobjSearchColumn("state", null, null),
new nlobjSearchColumn("country", null, null),
new nlobjSearchColumn("zip", null, null),
new nlobjSearchColumn("phone", null, null)
]
);
if (results)
{
var result = results[0];
return {
attention: result.getValue('attention', 'address'),
addressee: result.getValue('addressee', 'address'),
address1: result.getValue('address1'),
address2: result.getValue('address2'),
address3: result.getValue('address3'),
city: result.getValue('city'),
state: result.getValue('state'),
country: result.getValue('country'),
zip: result.getValue('zip'),
phone: result.getValue('phone')
};
}
试一试:
nlapiLoadRecord("location", locationID, {recordmode: "dynamic"})
.viewSubrecord("mainaddress")
.getFieldValue('addrtext');
我在浏览器中打开了一个 Location 记录,然后从那里打开了一个控制台来加载 nlobjRecord。查看字段,我看到有一个 mainaddress2_set
字段由 nlapiViewSubrecord("mainaddress")
我无法从客户端控制台调用 viewSubrecord("mainaddress")
,但我确实创建了一个简单的 suitelet 来加载位置记录并打印地址。
function GET(request, response){
var r = nlapiLoadRecord("location", "123456", {recordmode: "dynamic"});
response.write(r.viewSubrecord("mainaddress").getFieldValue('addrtext'));
response.write(r.viewSubrecord("mainaddress").getFieldValue('addr1'));
// etc.
}