将变量从用户事件脚本传递到NetSuite中的客户端脚本

时间:2015-11-21 14:39:15

标签: netsuite suitescript

我使用2个脚本在NetSuite中完成电子邮件功能。我有一个用户事件脚本,它创建一个按钮和一个客户端脚本,用于提取所有需要的变量,并根据Sales Team子列表中的值运行电子邮件。这是我的问题:在测试脚本时,一切都很顺利,因为我正在使用我的管理员角色进行测试(我知道的菜鸟错误)。当Admin以外的角色尝试通过按钮单击运行脚本时,由于角色权限问题​​(无法提取存储电子邮件地址的员工数据)而引发nlObjError。是否可以在UE脚本(可以作为管理员执行)中提取我需要的所有变量并将其传递给客户端脚本?

UE脚本:

function userEventCreateButton(type, form, request){

if (type != 'edit'){
        return;
    }
form.addButton('custpage_RequestSOW', "Request SOW", 'cs_RequestEmail()');
form.setScript('customscript224');  

客户端脚本:

...for (var y = 1; y <= nlapiGetLineItemCount('salesteam'); y++) {
        var z = nlapiGetLineItemValue('salesteam', 'salesrole', y);
        nlapiLogExecution('DEBUG', 'sales role', z);
        var user = nlapiGetUser();
        **var username = nlapiLoadRecord('employee', user);**
        var firstname = username.getFieldValue('firstname');
        var lastname = username.getFieldValue('lastname');
        var opptitle = nlapiGetFieldValue('title');
        var customer = nlapiGetFieldValue('customer');
        nlapiLogExecution('debug', 'user', user);
        if (z != 5){}
        else if (z == 5){
            var employee_name = nlapiGetLineItemValue('salesteam', 'employee', y);
            console.log(employee_name);
            **var engrecord = nlapiLoadRecord('employee', employee_name);**
            console.log(engrecord);
            var engemail = engrecord.getFieldValue('email');
            console.log(engemail);
            nlapiSendEmail(user...

2 个答案:

答案 0 :(得分:4)

另一个选择是您可以将员工电子邮件添加到before load user event脚本中的隐藏字段,该脚本部署为以管理员身份运行,然后在您的客户端脚本中可以阅读电子邮件

//in a variable make a JSON of employee Ids to Emails
newForm.addField('custpage_emails', 'longtext','Email').setDisplayType(hidden).setValue(JSON.stringify(employeeIdEmails));

在客户端脚本中,您现在可以使用

获取数据
var emploeeIdToEmails = JSON.parse(nlapiGetFieldValue('custpage_emails'));

答案 1 :(得分:3)

我要做的是让客户端脚本调用无格式的Suitelet。 suitelet将是生成和发送电子邮件的人。如果将Suitelet的部署设置为Execute As = Administrator,则应解决权限问题。

另一个解决方案是在Before Load脚本中获取数据,将其放在JSON对象中并将其存储在记录的自定义字段中。