У меня есть таблица с 6 столбцами адресов электронной почты, которые автоматически обновляются в зависимости от ввода пользователя и возраста. Каждый столбец соответствует отдельной группе Google.Автоматическое обновление членства в группе Google в динамическом списке адресов электронной почты в электронной таблице Google
Я хотел бы автоматически заполнить членство в Google Group на основе динамических значений в каждом столбце таблицы. Например, как при редактировании, так и в ежедневном таймере - скрипт Google будет читать список адресов электронной почты в столбце A и обновлять соответствующую группу Google.
В идеале сценарий будет вызывать текущее членство в Google Group, сравнить его со списком адресов электронной почты в столбце A, удалить из группы любые адреса, которые больше не отображаются в столбце A, и добавить в группу любые адреса, которые отображаются в столбце A, но в настоящее время не входят в группу.
Это может потребовать слишком много. В качестве альтернативы я могу представить сценарий, удаляющий всех участников из группы, а затем добавление всех адресов электронной почты в столбце A в группу. Хотя это будет достигать той же цели (насколько я вижу), я задаюсь вопросом, будет ли какая-то потерянная история или какой-то аналогичный побочный эффект для стирания всех членов на регулярной основе. Таким образом, я предпочитаю сначала использовать метод сравнения.
В форуме я могу найти эту дискуссию, с ответом от Serge INSAS: Add emailadress to Spreadsheet, auto add the email to a Google group
Когда я запускаю этот код в моем редакторе сценариев, заменив «[email protected]» с адресом электронной почты для мой Google Group, я получаю следующее сообщение об ошибке:
Service error: : Invalid request URI
со ссылкой на линию 10, которая является
var group = GroupsManager.getGroup('[email protected]');
Getti Прошла эта ошибка 1 проблема. После того, как я пройду эту ошибку, мне нужно узнать, как сравнить членство в Группе с списком электронных таблиц и/или удалить все и переименовать все.
Любая помощь по этим двум проблемам очень ценится!
Edit 1 (после подтверждения Mogsdad, что я не могу использовать GAS API для обновления членства в Google Group)
Итак, план Б для меня это не хак вокруг, потому что я слишком новичка, чтобы чувствовать себя комфортно там. Вместо этого Plan B должен написать сценарий, который будет сравнивать список пользователей электронных таблиц с списком пользователей группы Google и сообщить, какие пользователи необходимо вручную добавить/удалить из списка пользователей группы Google. Я адаптировал код, который вы указали, в сообщении, которое вы мне связали.
function compareGroupMembers() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Groups');
var rows = sheet.getDataRange();
var values = rows.getValues();
var sheetUsers = [];
Logger.log(values)
// Get user list from sheet
for (var i = 1; i < values.length; i++) {
var row = values[i];
sheetUsers.push(row[0]); // build array of users
}
Logger.log(sheetUsers)
// Get user list from group
var group = GroupsApp.getGroupByEmail("[email protected]");
var groupUsers = group.getUsers().join(',').split(',');
Logger.log(groupUsers)
// Compare user lists and define users to Add and Remove
//*****This is where I need direction. This code is just a placeholder.*****
var usersToAdd = sheetUsers.uniqueFrom(groupUsers);
var usersToRemove = groupUsers.uniqueFrom(sheetUsers);
var addErrors = 0; // Counter for exceptions
//Then I would like usersToAdd and usersToRemove to be listed in a separate sheet
//Because I have six groups, I'm hoping the new sheet can be organized by
//Col A is Google Group email
//Col B is user email
//Col C is "add" or "delete"
};
Можно ли создать выходной сигнал, который говорит мне, какие члены необходимо вручную добавить (то есть те, которые находятся в списке листов, но не в списке группы), и те, вручную удалить (т.е. тех, кто находится на список групп, но не указаны в списке листов)?
Кроме того, могу ли я иметь один и тот же скрипт для шести разных групп? (в моем листе адрес электронной почты группы находится в строке 1, а адреса электронной почты участника находятся под ним, для всех 6 столбцов). Если это возможно, то я хочу, чтобы на выходе указывалась какая группа, которую пользователь должен добавить вручную или удалены из.
Благодарим за помощь!
Привет, Могсдад, спасибо, что привлек мое внимание к различию между группами доменов и группами Google. Я имею дело с группами Google. Я сделал немного больше копания после вашего сообщения и нашел это сообщение: http://stackoverflow.com/questions/3757793/api-for-google-groups. Правда ли, что API для GOOGLE GROUPS API отсутствует? Означает ли это, что я не могу добавлять или удалять пользователей из групп Google с помощью GAS? (Я новичок, поэтому спасибо за репетиторство.) – duck
Вау, большой облом :(спасибо за объяснение. Тем не менее, я обновил свое оригинальное сообщение с просьбой о помощи по более простой работе (просто хочу сравнить два списки и сообщать об уникальных значениях, чтобы я мог вручную изменить членство в Группе Google). Спасибо! – duck
быстрый вопрос, так как я полагаюсь на вас за последнее слово - в онлайн-обсуждениях, похоже, указывается, что в группе классов функция getUser only возвращает адреса электронной почты с gmail.com и не возвращает никаких других (например, yahoo.com или comcast.net). Это правда? Если да, можете ли вы сказать мне, есть ли какая-то работа, которая позволила бы мне для получения ВСЕХ членов группы независимо от домена электронной почты? Спасибо! – duck