如何使用 GAS 自动将所有事件从一个日历复制到另一个日历?

How to automatically copy all events from one calendar to another with GAS?

在尝试将所有事件从一个 google 日历自动复制到另一个日历时,我似乎遗漏了一些相当明显的东西。其他人不想访问源日历,所以就可以了。

以下是无效的,作为开球。

function copyAppointments() {
  var sourceCalendar = CalendarApp.getCalendarById("exampleSource@group.calendar.google.com");
  var targetCalendar = CalendarApp.getCalendarById("targetExample@group.calendar.google.com");
  var events = sourceCalendar.getEvents();

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    if (event > -1) {
      targetCalendar.createEvent();
    }
  }
}

你会怎么做?

function copyAppointments() {
  const sourceCalendar = CalendarApp.getCalendarById("exampleSource@group.calendar.google.com");
  const targetCalendar = CalendarApp.getCalendarById("targetExample@group.calendar.google.com");
  const dt=new Date();
  const starttime  = new Date(dt.getFullYear()-1,dt.getMonth(),dt.getDate(),0,0,0,0);//one year ago
  const endtime = new Date(dt.getFullYear()+1,dt.getMonth(),dt.getDate(),0,0,0,0);//next year
  const events = sourceCalendar.getEvents(starttime,endtime);
  events.forEach(e =>{
    targetCalendar.createEvent(e.getTitle(),starttime,endtime);
  });
}

抱歉,我想应该是这样的:

function copyAppointments() {
  const sourceCalendar = CalendarApp.getCalendarById("exampleSource@group.calendar.google.com");
  const targetCalendar = CalendarApp.getCalendarById("targetExample@group.calendar.google.com");
  const dt=new Date();
  const starttime  = new Date(dt.getFullYear()-1,dt.getMonth(),dt.getDate(),0,0,0,0);//one year ago
  const endtime = new Date(dt.getFullYear()+1,dt.getMonth(),dt.getDate(),0,0,0,0);//next year
  const events = sourceCalendar.getEvents(starttime,endtime);
  events.forEach(e =>{
    targetCalendar.createEvent(e.getTitle(),e.getStartTime(),e.getEndTime());
  });
}

我只是 运行 通过将事件标题、开始时间和结束时间导出到我的电子表格来进行这个简单的测试,我收到了日期。

function copyAppointments() {
  const sourceCalendar = CalendarApp.getCalendarById("calid");
  const ss= SpreadsheetApp.getActive();
  const tsh= ss.getSheetByName('Sheet1');
  const dt=new Date();
  const starttime  = new Date(dt.getFullYear()-1,dt.getMonth(),dt.getDate(),0,0,0,0);//one year ago
  const endtime = new Date(dt.getFullYear()+1,dt.getMonth(),dt.getDate(),0,0,0,0);//next year
  const events = sourceCalendar.getEvents(starttime,endtime);
  let oA=[];
  events.forEach(e =>{
     oA.push([e.getTitle(),e.getStartTime(),e.getEndTime()])
  });
  tsh.getRange(1,1,oA.length,oA[0].length).setValues(oA);
}