为什么我不能 return 使用 App 脚本从日历邀请中获取特定电子邮件地址的列表?

Why can't I return a list of specific email addresses from a Calendar invite with App Script?

我正在尝试 return 使用脚本在 GSuite 日历上列出所有活动参与者的特定电子邮件地址,但我只能 return ID 号或出现的列表仅作为 "EventGuest, EventGuest, EventGuest...."

是否可以 return 电子邮件地址本身?在此先感谢您的指导!

这是我正在使用的基本脚本:

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() returns 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
  • 在此修改中,电子邮件由 , 分隔并放入一个单元格中。

参考文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

Event Guest 是一个对象。这是它的方法:

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