グループのメールを入力し、すべてのメンバーを解析して 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 つは、メールの種類 (ユーザー、グループ、エイリアスなど) をテストすることですが、その方法がわかりません。
ありがとうジェレミー・ベコース