【问题标题】:NetSuite Searching for a Duplicate Email AddressNetSuite 搜索重复的电子邮件地址
【发布时间】:2014-04-20 01:33:34
【问题描述】:

从我之前的所有问题中可以看出,我正在尝试学习一些 NetSuite Suitescript 以真正利用 NetSuite。话虽如此,我已经到了可以搜索最大员工人数然后采取相应行动的地方。现在我想做的是搜索一个电子邮件地址,看看给定的电子邮件地址是否重复。如果电子邮件地址已存在员工记录,则基本上确保工作流不会创建新的员工记录。

到目前为止,我有以下...

function checkDuplicate(givenEmail){
    var filters = new nlobjSearchFilter('email', null, givenEmail);
    var colums = new nlobjSearchColumn('email');
    var results = new nlobjSearchRecord('employee', null, filters, columns);
    if(results[0].getValue('email') == null) return false;
    else return true;
}

有没有更好/更简单的方法?我将对此进行测试。

【问题讨论】:

    标签: netsuite


    【解决方案1】:

    你的语法有点不对劲。根据您的脚本,我建议应用以下修改:

    function checkDuplicate(givenEmail){
        var filters = new nlobjSearchFilter('email', null, 'is', givenEmail);
        var results = new nlapiSearchRecord('employee', null, filters);
    
        return (results != null);
    }
    

    由于您只是检查是否有任何匹配的结果,因此不需要nlobjColumn。此外,如果没有任何匹配项,nlapiSearchRecord 将返回 null。

    作为补充说明,您的 SuiteScript 似乎仍然有点粗糙(至少使用搜索 API),所以我建议在 NetSuite 帮助中心查找“使用 SuiteScript 搜索”。

    【讨论】:

    • 虽然这肯定更接近,但此功能并不能完全告诉您有重复的电子邮件;它只告诉您电子邮件存在。为了检测重复,我会稍微修改函数的返回值:return (results && (results.length > 1)); 这确保results 不是nullnlapiSearchRecord 在没有匹配结果时返回null),然后检查是否还有更多多于一条匹配记录。
    • 是的,尽管该场景是为了防止创建新的员工记录,如果员工已经存在相同的电子邮件 - 因此,只有在匹配时才返回 true。
    • 啊,我的错误 - 我以为我们正在寻找已经重复的电子邮件。如果我们只是想阻止,您的函数可以做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2019-12-31
    • 2017-08-29
    • 2010-11-04
    • 1970-01-01
    • 2021-08-29
    • 2015-11-19
    相关资源
    最近更新 更多