繁体   English   中英

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

[英]Google Apps Script: Unexpected exception when parsing email

我正在尝试创建一个脚本,该脚本将输入组的电子邮件作为输入并解析所有成员以将其添加到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

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

当您创建Google网上论坛时,所有别名的成员列表都会自动删除,因此这些别名没有问题。 您必须检查自己是否面对其他群体,或者电子邮件地址可能来自以下两种类型:来自您域的电子邮件->您可以使用来自您域以外的用户管理器功能的电子邮件来查找->我不相信在向他们发送东西之前先知道它们是否有效的方法

下一个代码将返回您域中的“ 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM