我在A列中有一个日期列表(从A2开始),在B列中有一个标题文本(从B2开始)。我的单元格E2中列出了我的日历ID。
我想将此数据发送到Google日历以创建重复的全天日历活动。更改电子表格后,该日历应会更新。
答案 0 :(得分:1)
这是我为您找到的。基于我的理解,可能是我错了。只是想帮助您。
https://www.quora.com/How-do-I-automatically-add-events-to-a-Google-Calendar-from-a-Google-Sheet
或者您可以使用应用程序为您完成此任务,这是分步指南
答案 1 :(得分:0)
我写了这段小代码,使用工作表中的数据创建重复事件。
我没有在触发器中编写此代码,因此您必须手动运行它。可以用onEdit trigger编写,但是我认为这不是最好的主意,因为您很快就会遇到大量重复事件,尽管可以通过添加一些条件来避免这种情况,例如检查具有这些特征的事件已经存在:
function createEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var firstRow = 2;
var firstCol = 1;
var numRows = lastRow - firstRow + 1;
var numCols = 2;
var data = sheet.getRange(firstRow, firstCol, numRows, numCols).getValues();
var calId = sheet.getRange("E2").getValue();
var cal = CalendarApp.getCalendarById(calId);
var recurrence = CalendarApp.newRecurrence().addYearlyRule();
for(var i = 0; i < data.length; i++) {
var title = data[i][1];
var date = new Date(data[i][0]);
var event = cal.createAllDayEventSeries(title, date, recurrence);
}
}
此外,如果要在创建新事件时删除以前创建的事件,则应跟踪所有旧事件并对此代码进行一些编辑,但是我不确定要删除它们。
如果要在编辑工作表时创建事件,而不必手动运行该函数,则建议使用onEdit trigger创建与已写行相对应的事件。另外,仅当行中的数据有效(列A和B不为空,并且列A中的值是有效的Date)时,才可以添加条件以创建事件。
以下功能可完成所有先前的操作:
function createEvent(e) {
var sheet = e.source.getActiveSheet();
var range = e.range; // Edited range
var rowIndex = range.getRow(); // Edited row index
var firstCol = 1;
var numCols = 2;
var data = sheet.getRange(rowIndex, firstCol, 1, numCols).getValues()[0];
var title = data[1];
var date = data[0];
// Check whether column A is a valid Date and column B is not empty:
if(Object.prototype.toString.call(date) === '[object Date]' && title != "") {
var calId = sheet.getRange("E2").getValue(); // Get calendar id from cell 'E2'
var cal = CalendarApp.getCalendarById(calId);
var recurrence = CalendarApp.newRecurrence().addYearlyRule();
var event = cal.createAllDayEventSeries(title, date, recurrence); // Create event
}
}
为了在编辑时运行,此功能需要一个onEdit
触发器。此触发器必须为installed,因为simple trigger cannot access services that require authorization。
您可以by following these steps手动安装此触发器(如果配置触发器的类型时遇到问题,check this screenshot)。
您也可以通过编程方式安装此触发器as explained here。
请让我知道现在是否适合您。希望对您有所帮助。