Google Apps脚本:解析电子邮件时出现意外异常

时间:2013-03-11 19:31:32

标签: javascript google-apps-script

我正在尝试创建一个脚本,在输入中收集组的电子邮件并解析所有成员以将其添加到CSV文档中。

问题是我的一些组包含其他组,所以我必须递归调用我的函数。并且为了递归地调用它,我需要测试电子邮件地址以了解它是用户还是组。 代码如下:

var USERS = new Array();
var INDEX = 0;


function listAllUsersInGroup(email) {
  var temporaryObjectListMember = GroupsManager.getGroup(email).getAllMembers();
  for (z=0; z<temporaryObjectListMember.length; z++) {
    try {
      var group = GroupsManager.getGroup(temporaryObjectListMember[z]);
    }
    catch (err2){Logger.log(err2)}
    if (group != null) { listAllUsersInGroup(group.getId());}
    else {
      try {
        var user = UserManager.getUser(temporaryObjectListMember[z].substring(0,temporaryObjectListMember[z].lastIndexOf('@')));
      } catch(err) { Logger.log(err) }

      if (user != null) {
        USERS[INDEX] = user.getEmail();
        INDEX++;
      }
    }
  }
}

我用main来调用这个函数:

function main() {
  var email = "grouptest@domain.com";
  listAllUsersInGroup(email);
}

当该组包含用户和另一个组时,它在“序列化继续”时出现“意外异常”错误。

在这种情况下,try catch似乎不起作用。

一种解决方案可能是测试电子邮件的类型(用户,组,别名......),但我还没有找到如何做到这一点。

由于 JérémieBECOUSSE

1 个答案:

答案 0 :(得分:1)

在对脚本进行少量修改后,它似乎正常工作。

当您创建Google群组时,会自动删除所有别名的成员列表,这样就没有问题。 你必须检查你是否面对其他组或电子邮件地址可以有两种类型: 来自您域名的电子邮件 - &gt;你可以通过用户管理器功能找到它 来自您域外的电子邮件 - &gt;我不相信有一种方法可以在向那些

发送内容之前知道它们是否有效

下一个代码将返回您域中的“USERS”用户以及非域名“EXTUSER”用户。 (运行testingIt())

 function listAllUsersInGroup(email) {
  var temporaryObjectListMember = GroupsManager.getGroup(email).getAllMembers();
  for (var z in temporaryObjectListMember) {
    var member = temporaryObjectListMember[z];
    try {
      var group = GroupsManager.getGroup(member);
    }
    catch (err2){
      //Logger.log("is not group: "+err2);
    }

    if (group != null) { 
      Logger.log(member+" is a group");
      listAllUsersInGroup(member);
    }
    else {
      try {
        var user = UserManager.getUser(member.split('@')[0]);
      } catch(err) { 
        //Logger.log("it's not a known mail: "+err);
        EXTUSERS.push(member);
      }

      if (user != null) {
        USERS.push(member);
      }
    }
  }
  Logger.log("end of the group");
}

var EXTUSERS = [];
var USERS = [];


function testingIt(){
  listAllUsersInGroup("groupemailadress@domain.ext");
  Logger.log("recognized users are: "+USERS);
  Logger.log("unrecognized users are: "+EXTUSERS);
}