2013-03-11 3 views
1

그룹의 이메일을 입력 받아 모든 구성원을 구문 분석하여 CSV 문서에 추가하는 스크립트를 만들려고합니다.Google Apps Script : 이메일 구문 분석시 예기치 않은 예외가 발생했습니다.

문제는 내 그룹의 일부가 다른 그룹을 포함하므로 재귀 적으로 내 기능을 호출해야한다는 것입니다. 그리고 recursivelly 나는 그것의 사용자 또는 그룹을 알기 위해 이메일 주소를 테스트해야합니다. 다음 코드 :

function main() { 
    var email = "[email protected]"; 
    listAllUsersInGroup(email); 
} 

그룹이 포함 된 사용자와 다른 그룹, 그것은 오류에 "계속 직렬화시 예기치 않은 예외"깨고 :

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++; 
     } 
    } 
    } 
} 

내가 주와 함께이 함수를 호출합니다.

이 경우 try try does''t는 작동하는 것 같습니다.

한 가지 해결책은 이메일 (사용자, 그룹, 별칭, ...)의 유형을 테스트하는 것이었지만이를 수행하는 방법을 찾지 못했습니다.

감사 제레미 BECOUSSE

스크립트의 약간의 수정 후
+0

안녕 Jérémie. 나는 이것을 조금 들여다 보았습니다. 그리고 여기에 버그가 있다고 생각합니다. [Google Apps Script issue tracker] (https://code.google.com/p/google-apps-script-issues/issues/list)에서 문제를 열어 보시겠습니까? 감사! – bcat

+0

안녕하세요, 귀하의 조언에 따라 문제 (열 2534)를 열었습니다 누군가가 이메일 주소가 사용자 또는 그룹 또는 별칭인지 여부를 감지하는 다른 방법을 알고 있다면 받아 볼게! :-) 감사합니다. –

+0

감사합니다. 우리는 수정 작업을하고 있습니다. – bcat

답변

1

가 제대로 작동하는 것 같군.

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("[email protected]"); 
    Logger.log("recognized users are: "+USERS); 
    Logger.log("unrecognized users are: "+EXTUSERS); 
} 
관련 문제