- 我正在尝试批量邀请群组成员参加日历活动
- 如果我使用其电子邮件邀请该组,则该组在事件中被拆分(这是正常的)但邀请未“验证”......我可以在日历界面中手动验证它们,但这不是解决方案。最后,即使他们的名字出现在活动中,客人也不会被邀请。如果我不手动“保存”此事件,日志会将该组显示为 only guest,而不是它的 users。
因此,我尝试使用下面的脚本分别添加每位客人,但我收到一个我不明白 的错误该错误出现在第一次活动成功邀请的可变数量之后......有时只有一个,有时是 2 或 3 或 5 ...随机。
这是在域上的谷歌应用程序教育帐户上运行的。我拥有管理员权限,并且拥有日历的所有权限。
这是相关功能的代码:(获取组成员,邀请他们参加一段时间内的每个事件,在新工作表上打印结果日志。)
function sendinvites(e) {
var calendar_name = e.parameter.calendar;
var email = calendar_name.toLowerCase()+'@insas.be';
var group = GroupsManager.getGroup(email);
var members = group.getAllMembers();
var startDate = new Date(e.parameter.start);
var endDate = new Date(e.parameter.end);
var Calendar = CalendarApp.getCalendarsByName(calendar_name);
var sheetName = calendar_name + "-du-" + Utilities.formatDate(e.parameter.start, FUS1, "dd-MMM-yyyy")
+ "-au-" + Utilities.formatDate(e.parameter.end, FUS1, "dd-MMM-yyyy")
//
var events = Calendar[0].getEvents(startDate , endDate);
if (events[0]) {
var eventarray = new Array();
var line = new Array();
line.push('Titre : '+calendar_name,'Début ','Fin','Localisation','Durée','invités');
eventarray.push(line);
for (i = 0; i < events.length; i++) {
if(events[i].getTitle().match('semaine n')=='semaine n'){continue}
var lr = logsheet.getLastRow(); // these lines are added here for test purpose only, to see where in the loop it fails... that's why I set values cell by cell !
logsheet.getRange(lr+1,1).setValue(events[i].getTitle()+' / '+Utilities.formatDate(events[i].getStartTime(), FUS1, "dd-MMM-yyyy"));
for(nn=0;nn<members.length;++nn){
logsheet.getRange(lr+1,nn+2).setValue(members[nn]);
events[i].addGuest(members[nn])
}
line = new Array();
line.push(events[i].getTitle());
line.push(Utilities.formatDate(events[i].getStartTime(), FUS1, "dd-MMM-yyyy")+' à ' +Utilities.formatDate(events[i].getStartTime(), FUS1, "HH:mm"));
line.push(Utilities.formatDate(events[i].getEndTime(), FUS1, "dd-MMM-yyyy")+' à ' +Utilities.formatDate(events[i].getEndTime(), FUS1, "HH:mm"));
line.push(events[i].getLocation());
line.push((events[i].getEndTime() - events[i].getStartTime()) / 3600000);
var invitelist='';
var list = events[i].getGuestList()
for(nn=0;nn<list.length;++nn){invitelist+=list[nn].getName()+', '}
line.push(invitelist)
eventarray.push(line);
}
Logger.log(eventarray)
var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
sheet.getRange(1,1,eventarray.length,eventarray[0].length).setValues(eventarray);
sheet.getRange(1,1,1,eventarray[0].length).setBackgroundColor('#ffffcc');
sheet.setColumnWidth(1, 450);sheet.setColumnWidth(2, 150);sheet.setColumnWidth(3, 150);sheet.setColumnWidth(4, 250);sheet.setColumnWidth(5, 75);sheet.setColumnWidth(6, 450);;
sheet.setFrozenRows(1)
} else {
var startstring = Utilities.formatDate(e.parameter.start, FUS1, "dd-MMM-yyyy");
var endstring = Utilities.formatDate(e.parameter.end, FUS1, "dd-MMM-yyyy");
Browser.msgBox('Aucun événement entre le ' + startstring + ' et le ' + endstring +' dans votre agenda :'+calendar_name);
}
var app = UiApp.getActiveApplication();
app.close();
return app;
}
所以我的问题是:这是正确的方法吗?我应该通过其电子邮件邀请该组吗?在这种情况下,我如何才能将该组自动拆分到每个日历中?
有没有人遇到过这种情况?
我有点卡在这里:-/
参考: 问题跟踪器 1906与 264合并 ,请参阅自己的答案以了解详细信息