【发布时间】:2019-06-05 19:47:52
【问题描述】:
我正在尝试弄清楚如何检索和报告日历活动的详细信息,包括所有客人及其电子邮件地址。
我也试过这个,但只检索到一个电子邮件地址(有时):
function getEmailsFromArray(guestsArray){
var guestEmails = [];
for (var i=0;i<guestsArray.length;i++) {
guestEmails.push(guestsArray[i].getEmail());
}
return guestEmails; }
这是我现在使用的代码。救命!
function export_gsheet(){
var mycal = "myemailaddress@mine.com";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(new Date("May 02, 2019 00:00:00 PST"), new Date("May 03, 2019 00:00:00 PST"));
var sheet = SpreadsheetApp.getActiveSheet();
var header = [["Calendar Address", "Event Title", "Event Description", "Calculated Duration", "Attendees", "Email", "MyStatus", "Created By", "All Day Event", "Recurring Event", "Event Location", "Event Start", "Event End", "Visibility", "Date Created", "Last Updated"]]
var range = sheet.getRange(2,1,1,16);
range.setValues(header);
for (var i=0;i<events.length;i++) {
var row=i+3;
var myformula_placeholder = '';
var guestList=events[i].getGuestList(); //GET THE EMAIL AND STATUS OF EACH GUEST FOR EACH EVENT
for(var d=0; guestList!=null && d<guestList.length; d++)
{
var details=[[mycal,events[i].getTitle(), events[i].getDescription(), myformula_placeholder, guestList[d].getName(), guestList[d].getEmail(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated()]];
var range=sheet.getRange(row,1,1,16);
Logger.log(details);
var range2 = sheet.getRange(row+d,1,1,16);
range2.setValues(details);
}
row=row+d; // increment row to start the next output after the previous output
}
}
代码大部分都有效,但我没有获得活动的完整宾客名单,有时我会获得会议室的名称和日历地址。
如果特定活动的宾客名单很大,我也不会在特定日期获得所有活动。
【问题讨论】:
-
虽然我不确定这是否是您问题的直接解决方案,例如,当您的情况使用 Calendar API 的 events.list 方法时,您会得到什么结果? developers.google.com/calendar/v3/reference/events/list
标签: javascript google-sheets google-api google-calendar-api google-sheets-api