1

グループのメールを入力し、すべてのメンバーを解析して 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++;
      }
    }
  }
}

この関数をメインで呼び出します。

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

グループにユーザーと別のグループが含まれている場合、「継続のシリアライズ時に予期しない例外が発生しました」というエラーが発生しました。

この場合、try catch は機能しないようです。

解決策の 1 つは、メールの種類 (ユーザー、グループ、エイリアスなど) をテストすることですが、その方法がわかりません。

ありがとうジェレミー・ベコース

4

1 に答える 1

1

スクリプトを少し変更した後、正しく機能しているようです。

Google グループを作成すると、メンバーのリストからすべてのエイリアスが自動的に削除されるため、エイリアスに問題はありません。他のグループに直面しているかどうかを確認する必要があります。または、ドメインからのメールの 2 種類からのメール アドレスを確認する必要があります。ドメイン外からのメールは、ユーザー マネージャー機能で確認できます。それらに何かを送る前にそれらが有効かどうかを知る方法

次のコードは、ドメインの「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);
}
于 2013-03-13T13:15:31.713 に答える