如何使用getGuestList获取名称,而不是电子邮件地址?

时间:2013-04-23 10:39:43

标签: google-apps-script google-sheets google-calendar-api

我找到了这个脚本(由Jonathon发布),需要修改它以提供用户名。

当我尝试获取访客姓名时(使用getGuestList()),它会在我的电子表格中返回EventGuest。

如何将访客姓名(而非电子邮件)输入电子表格?

function caltest3(){

var ss = SpreadsheetApp.openById( 'spreadsheetId' ),
  sheet = ss.getSheetByName( 'sheetName' ),
  cals = ['id1', 'id2', 'id3'], c, cal, calName,
  start = new Date( 'whenever' ), end = new Date( 'whenever' ),
  events, i, details,
  eventslog = [], e,
  rows = [], range;

for (c = 0; c < cals.length; c += 1) {

cal = CalendarApp.getCalendarById(cals[c]);
calName = cal.getTitle();
events = cal.getEvents(start, end);

// add the events of the current calendar to the array of all events
  eventslog = eventslog.concat(
   events.map(function(event) {
     return {
       time: new Date(event.getStartTime()).getTime(), // sort by this
        details: [
         event.getTitle(),
         event.getStartTime(),
         event.getEndTime(),
         event.getDescription(),
         event.getLocation(),
         calName // change calendar info position in array to suit
        ]
      };
    })
  );
 }

// sort array of event so date order can be either way by reversing a & b
eventslog.sort(function(a, b) { return a.time - b.time; });

rows = eventslog.map(function(entry) { return entry.details; });

range = sheet.getRange(2, 1, rows.length, 6);
range.setValues(rows);
}

1 个答案:

答案 0 :(得分:1)

您需要遍历Event.getGuestList()返回的来宾,并使用EventGuest.getName()documented here检索每个名称。您应该验证该名称不是空白,并且在这种情况下可能会接受电子邮件 - 我会留给您。

以下是您的功能将如何变化:

function caltest3(){

var ss = SpreadsheetApp.openById( 'spreadsheetId' ),
  sheet = ss.getSheetByName( 'sheetName' ),
  cals = ['id1', 'id2', 'id3'], c, cal, calName,
  start = new Date( 'whenever' ), end = new Date( 'whenever' ),
  events, i, details,
  eventslog = [], e,
  rows = [], range;

for (c = 0; c < cals.length; c += 1) {

cal = CalendarApp.getCalendarById(cals[c]);
calName = cal.getTitle();
events = cal.getEvents(start, end);

// add the events of the current calendar to the array of all events
  eventslog = eventslog.concat(
   events.map(function(event) {
     var deets =  {
       time: new Date(event.getStartTime()).getTime(), // sort by this
        details: [
         event.getTitle(),
         event.getStartTime(),
         event.getEndTime(),
         event.getDescription(),
         event.getLocation(),
         calName // change calendar info position in array to suit
        ]
      };
      var guestList = event.getGuestList();
      event.guests = [];
      for (var i in guestList) {
        event.guests.push(guestList[i].getName());
      } 
      deets.guests = guestList;
      return deets;
    })
  );
 }