在电子表格的CalendarApp中选择定期事件的日期



我想让谷歌工作表在谷歌日历上创建一个重复事件。

有没有办法让这部分代码依赖于电子表格中的变量?我希望能够在我的电子表格上选择一周中的几天,而不必键入它们。

.onlyOnWeekday([CalendarApp.Weekday.MONDAY,CalendarApp.Weekday.WEDNESDAY])

这是我的功能

function newStudentCalendar() {
var app = SpreadsheetApp;
var sheet = app.getActiveSpreadsheet().getActiveSheet();   
var studentName = sheet.getRange(2, 1).getValue();

// set time variables for lesson creation
var year = sheet.getRange(2, 5).getValue();
var month = sheet.getRange(2, 3).getValue();
var day1 = sheet.getRange(2, 4).getValue();
var startTime = sheet.getRange(2, 6).getValue();
var endTime = sheet.getRange(2, 7).getValue();

//Creates the new students calendar  
var calendar = CalendarApp.createCalendar(studentName);
Logger.log('Created the calendar "%s", with the ID "%s".',
calendar.getName(), calendar.getId());
var calendarID = calendar.getId()
//Creates the recuring lessons 
var lessons = CalendarApp.getCalendarById(calendarID).createEventSeries(studentName + " lesson",                                                                     
new Date(month + day1 + ',' + year + ' ' + startTime),
new Date(month + day1 + ',' + year + ' ' + endTime),
CalendarApp.newRecurrence().addWeeklyRule()
.onlyOnWeekdays([CalendarApp.Weekday.MONDAY, CalendarApp.Weekday.WEDNESDAY]));
Logger.log('Event Series ID: ' + lessons.getId());
} 

这是完全可能的。为此,只需添加一行即可读取特定单元格中的值。该特定单元格将保存重复日期的名称。类似这样的东西:

var weekDay = SpreadsheetApp.getActive().getSheetByName('YOUR SHEET')
.getRange('YOUR_WEEKDAY_RANGE').getValue();

之后,假设工作日正确键入并使用大写字母,则可以运行此代码创建具有适当重复日期的事件:

// This will throw an error if the weekday is not valid.
var weekDayObject = CalendarApp.Weekday[weekDay];
CalendarApp.newRecurrence().addWeeklyRule()
.onlyOnWeekdays([weekDayObject]));

此外,如果您希望在一个单元格中有多天,例如:CCD_ 1。

您可以使用以下代码:

var weekDays = SpreadsheetApp.getActive().getSheetByName('YOUR SHEET')
.getRange('YOUR_WEEKDAY_RANGE').getValue();
var days = weekDays.split(',').map(function(i) { return CalendarApp.Weekday[i]; });
CalendarApp.newRecurrence().addWeeklyRule()
.onlyOnWeekdays(days);

一般的想法是CalendarApp.Weekday是一个常规的Javascript/GAS对象,因此您可以使用.运算符或[]运算符来访问其属性。

最新更新