我正在尝试读取包含电子邮件ID的CSV文件,该文件将用作搜索过滤器,以获取客户记录并删除其记录中的电子邮件ID。
这是我的代码
var context = nlapiGetContext();
var filedata = nlapiLoadFile(context.getSetting('SCRIPT', 'custscript42')).getValue().split(/\n|\n\r/);
for (var i = 0; i < filedata.length; i++) {
var email = filedata[i];
nlapiLogExecution('DEBUG', 'email', email);
var filters = new Array();
filters[0] = new nlobjSearchFilter('email', null, 'is', email);
var searchresults = nlapiSearchRecord('customer', null, filters, null);
nlapiLogExecution('DEBUG', '# of profiles with this email are:', searchresults.length);
for (var j = 0; searchresults != null && j < searchresults.length; j++) {
var id = searchresults[j].getId();
nlapiLogExecution('DEBUG', 'cleaning email for: ', id);
var record = nlapiLoadRecord('customer', id);
record.setFieldValue('email', '');
nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG', 'Result', 'Success');
}
}
我不明白为什么将searchresultss设置为NUll,我尝试通过UI进行搜索,以查看其是否适用于该特定电子邮件地址,以及它是否在脚本中有效。
有人有什么主意吗?
答案 0 :(得分:1)
尝试使用nlapiSearchRecord('entity'....
代替客户。
客户是记录类型,但是搜索类型是entity
在搜索中,添加类型为customer
https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2018_1/script/record/entity.html
此外,从治理方面来说,最好使用nlapiSubmitField
而不是加载/保存客户记录。
答案 1 :(得分:0)
在我的控制台上测试了这一功能,它可以正常工作。尝试将email变量设置为静态值以进行测试以查看其是否有效。另外,检查存储电子邮件的字段的内部ID是什么,可能会有所不同。
var email = "anna_sanchez@bananarama.com"
nlapiLogExecution('DEBUG', 'email', email);
var filters = new Array();
filters[0] = new nlobjSearchFilter('email', null, 'is', email);
var searchresults = nlapiSearchRecord('customer', null, filters, null);