为什么我无法使用 App 脚本从日历邀请中返回特定电子邮件地址的列表?



我正试图用脚本返回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是一个对象。以下是它的方法:

  1. getEmail((
  2. getAdditionalGuests((
  3. getGuestStatus((
  4. getName((

最新更新