У меня есть фрагмент кода, который извлекает список пользователей из группы Google, он просматривает группу «верхнего уровня», затем извлекает электронную почту пользователя и группу, в которой он находится. В случае вложенных групп этопроходит и снова делает то же самое.Таким образом, результат, по сути, такой:
| User (Column A) | Group (Column B) |
|---------------------- |------------------- |
| userFoo@email.com | Top Level Group |
| userBar@email.com | Top Level Group |
| userQux@email.com | Top Level Group |
| userQuux@email.com | Sub Level Group 1 |
| userCorge@email.com | Sub Level Group 2 |
| userUier@email.com | Sub Level Group 2 |
| userGrault@email.com | Sub Level Group 3 |
| userGarply@email.com | Sub Level Group 3 |
| userWaldo@email.com | Sub Level Group 3 |
Там, где в группе верхнего уровня всего 3 человека, и в ней 3 подгруппы (с 1, 2 и 3 членами соответственно).
Это хранится в массиве с именем output, который создается с помощью AdminDirectory.Group.get и помещает primaryEmail и groupName в массив:
output.push.apply([user.email, user.groupName])
Позже он выгружается в лист.Что я хочу, чтобы взять раздел user.email из выходного массива и создать уникальный список из него.У меня есть функция для генерации уникального списка:
function uniqueList(value, index, self) {
return self.indexOf(value) === index;
}
Так что мне просто нужна рука с созданием «чистого» списка (т.е. без информации об имени группы) из вывода.Конечно, я мог бы просто создать еще один массив и добавить к нему только часть user.email, но это кажется ненужным, поскольку я уже получил эту информацию.
Основной код:
function extract() {
var masterSS = SpreadsheetApp.openById(
"idGoesHere"
);
var inputSheet = masterSS.getSheetByName("Input");
var topGroup = inputSheet.getRange("B1").getDisplayValue();
var outputSheet = masterSS.getSheetByName("Output");
var uniqueOutput = masterSS.getSheetByName("Unique List");
if (topGroup.length != 0) {
Logger.log(topGroup);
} else {
throw "No Group Found!";
}
try {
var users = getUsersInGroup_(topGroup);
var output = [];
// Create the list of users + groups
users.forEach(function(user) {
output.push.apply([user.email, user.groupName]);
});
if (!outputSheet) {
masterSS.insertSheet("Output");
}
SpreadsheetApp.flush();
masterSS
.getSheetByName("Output")
.getRange(1, 1, output.length, output[0].length)
.setValues(output);
SpreadsheetApp.flush();
spreadsheetCleanUp_;
} catch (e) {
Logger.log(e);
}
}
Я уверен, что это просто, но я пробил.Очевидно, мне нужно больше кофе.