我正试图用脚本返回GSuite日历上所有活动参与者的特定电子邮件地址列表,并且我只能返回ID号或仅显示为"EventGuest,EventGuest、EventGuest…"的列表
是否可以返回电子邮件地址本身?提前感谢您的指导!
这是我正在使用的基本脚本:
function listCalendarAttendees(){
var calendar = CalendarApp.getCalendarById('AnyCalendarTEST@gmail.com');
var sheet = SpreadsheetApp.openById('TEST ID').getSheetByName('Bobs Calendar');
var startTime = new Date();
var endTime = new Date(startTime.getTime()+(1000*60*60*24*7));
var events = calendar.getEvents(startTime, endTime);
Logger.log('Number '+events.length);
for(var x=0;x<events.length;x++){
var event = events[x];
var messages = event.getTitle();
var eventStart = event.getStartTime();
var emails = event.getCreators().toString();
var descriptions = event.getDescription();
var guestListLength = event.getGuestList().length;
var guestListNames =event.getGuestList().toString();
sheet.appendRow([messages,eventStart,emails,descriptions,guestListLength,guestListNames]);
}
}
- 您想要检索活动中所有客人的电子邮件
如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。
修改要点:
getGuestList()
返回EventGuest[]
的对象。在这种情况下,getEmail()
可以从EventGuest
检索电子邮件- 当在for循环中使用
appendRow()
时,处理成本将很高。因此,在本次修改中,使用了setValues()
修改的脚本:
当您的脚本被修改时,它变成如下。
发件人:for(var x=0;x<events.length;x++){
var event = events[x];
var messages = event.getTitle();
var eventStart = event.getStartTime();
var emails = event.getCreators().toString();
var descriptions = event.getDescription();
var guestListLength = event.getGuestList().length;
var guestListNames =event.getGuestList().toString();
sheet.appendRow([messages,eventStart,emails,descriptions,guestListLength,guestListNames]);
}
收件人:var values = []; // Added
for(var x=0;x<events.length;x++){
var event = events[x];
var messages = event.getTitle();
var eventStart = event.getStartTime();
var emails = event.getCreators().toString();
var descriptions = event.getDescription();
var guestListLength = event.getGuestList().length;
var guestListNames = event.getGuestList().map(function(e) {return e.getEmail()}).join(","); // Modified
values.push([messages,eventStart,emails,descriptions,guestListLength,guestListNames]); // Modified
}
sheet.getRange(sheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values); // Added
- 在本次修改中,电子邮件由
,
分隔,并放入一个单元格中
参考文献:
- getGuestList((
- 课堂活动嘉宾
- 获取电子邮件((
如果我误解了你的问题,而这不是你想要的方向,我道歉。
Event Guest是一个对象。以下是它的方法:
- getEmail((
- getAdditionalGuests((
- getGuestStatus((
- getName((