NetSuite向在套件脚本中具有特定角色的所有用户发送电子邮件

时间:2018-06-21 10:39:14

标签: netsuite suitescript

我尝试向所有具有工程师角色的用户发送电子邮件, 我想找到一个功能,可以根据所有用户的角色为他们发送电子邮件, 或任何按其角色返回我所有用户的功能, 套件脚本包括这些功能之一吗?

3 个答案:

答案 0 :(得分:1)

搜索具有特定角色的所有员工,然后遍历他们以发送电子邮件。这是一个调度脚本和一个自定义模块的示例。

emailUtils.js

/**
 *  @NAPIVersion 2.0
 *  @NModuleScope Public
 */
define(['N/email', 'N/search'], function(email, search) {
  function sendEmailToRole(emailObject, roleId) {
    var employeeIds = getEmployeesByRole(roleId);
    employeeIds.forEach(function(employeeId) {
      emailObject.recipients = employeeId;
      email.send(emailObject)
    });
  }

  function getEmployeesByRole(roleId) {
    var results = search.create({
      type: 'employee',
      filters: [
        ['isinactive', 'is', 'F'],
        'and', ['role', 'anyof', roleId]
      ]
    }).run().getRange({ start: 0, end: 1000 });

    return (results || []).map(function(result) {
      return result.id;
    })
  }

  return {
    sendEmailToRole: sendEmailToRole
  };
});

emailSchedule.js

/**
 *  @NAPIVersion 2.0
 *  @NModuleScope Public
 *  @NScriptType ScheduledScript
 */
define(['./emailUtils'], function(emailUtils) {
  function execute() {
    var ADMINISTRATOR = 3;

    var email = {
      author: 1073,
      subject: 'SUBJ: This is a test email',
      body: 'This is the body of the test email',
    };

    emailUtils.sendEmailToRole(email, ADMINISTRATOR);
  }

  return {
    execute: execute
  }
});

答案 1 :(得分:1)

我建议的方法是对具有此角色的雇员进行新的保存搜索(以及您希望满足的任何其他条件),然后使用该保存搜索定义动态实体组(Lists > Relationships > Groups > New )。然后,您可以将该组设置为电子邮件的收件人。

答案 2 :(得分:0)

您应该保存对角色为工程师的员工的搜索。然后,您可以使用sendEmail功能向其中的每个人发送电子邮件