防止从电子表格添加到日历时出现重复事件

Prevent duplicate events when adding from spreadsheet to calendar

本文关键字:事件 日历 电子表格 添加      更新时间:2023-09-26

此问题与此处提出的问题有关,但此示例不使用日历应用程序,而是使用高级日历服务

我被困在如何防止重复出现,因为getEventSeriesById在这里不起作用。

function onOpen() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    var entries = [{
        name : "Export Events",
        functionName : "exportEvents"
    }];
    sheet.addMenu("Calendar Actions", entries);
};
function exportEvents() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calendar");
    var headerRows = 1;  
    var range = sheet.getDataRange();
    var data = range.getValues();
    var calId = 'MY_ID';
    for (i=0; i<data.length; i++) {
        if (i < headerRows) continue; 
        var row = data[i];
        var date = row[0];
        var endDate = row[1];
        var title = row[2];           
        var desc = row[3];
        var id = row[4];
        var color = row[5];
        var newEvent = {
            summary: title,
            description: desc,
            "start": {
                "date": date
            },
            "end": {
                "date": endDate
            },
            colorId: color
        };
        newEvent = Calendar.Events.insert(newEvent, calId);
        row[4] = newEvent.id
        /* //this bit does not work
        if (id === 1) {
            var delEvent = Calendar.Events.remove(calId, id);
            delEvent.execute;
        }
        */
        range.setValues(data);
    }
}

这是一个解决方案:

function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Export Events",
functionName : "exportEvents"
}];
sheet.addMenu("Calendar Actions", entries);
};
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calendar");
var headerRows = 1;  
var range = sheet.getDataRange();
var data = range.getValues();
var calId = 'insert cal id';
for (i=0; i<data.length; i++) {
if (i < headerRows) continue; 
var row = data[i];
var date = row[0];
var endDate = row[1];
var title = row[2];           
var desc = row[3];
var id = row[4];
var color = row[5];
var check = row[6];
var newEvent = {
summary: title,
description: desc,
"start": {
"date": date
},
"end": {
"date": endDate
},
colorId: color
};
newEvent = Calendar.Events.insert(newEvent, calId);
row[4] = newEvent.id
if (check == 1) {
var delEvent = Calendar.Events.remove(calId, id);
} else {
newEvent.execute;
}
range.setValues(data);
}
}