如何使用 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);
}
在尝试将所有事件从一个 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);
}