CRM:Javascript 回复电子邮件时设置多个电子邮件地址

CRM: Javascript to Set Multiple Email Addresses when Replying to an Email

在 CRM 2013 上,当用户单击 "Reply All" 时,我试图将多个参与者插入到电子邮件 "to" 字段中。但是我需要从“收件人”行中删除某些电子邮件地址。所以我创建了一个数组来循环并获取除需要删除的电子邮件地址之外的所有电子邮件地址。

然而,这里的问题是,只有在移除不需要的参与者后只剩下一名参与者时,它才有效。如果有两个或更多参与者,脚本将不会填充任何参与者。

有没有办法填充多个电子邮件参与者?还是有比我在这里尝试做的更好的方法?

这是我的代码:

var toParty = Xrm.Page.getAttribute("to").getValue();

var partyListArray = new Array();
for (var indxAttendees = 0; indxAttendees < toParty.length; indxAttendees++) {
  // using oData to get participant email address
  var email = getParticipantEmail(
    toParty[indxAttendees].entityType, 
    toParty[indxAttendees].id
  );
  if (email != "test@test.com") {
    partyListArray[indxAttendees] = new Object();
    partyListArray[indxAttendees].id = toParty[indxAttendees].id;
    partyListArray[indxAttendees].name = toParty[indxAttendees].name;
    partyListArray[indxAttendees].entityType = toParty[indxAttendees].entityType;
  }
}

Xrm.Page.getAttribute("to").setValue(null);
Xrm.Page.getAttribute("to").setValue(partyListArray);

您可以从数组本身中删除您想要的内容,而不是创建一个全新的数组。试试这个:

var emails = [{email: "add1@domain.com"}, {email: "add2@domain.com"}, {email: "address@toBe.Removed"},  {email: "add3@domain.com"}, {email: "add4@domain.com"}];

var removeIndex = emails.map(function(item) { return item.email; }).indexOf("address@toBe.Removed");

removeIndex > -1 && emails.splice(removeIndex, 1);