[英]Parsing string to find email within string via Google Apps Script
[英]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.