我使用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...
答案 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对象中并将其存储在记录的自定义字段中。