У меня есть хорошая функция, которая показывает все события в моем календаре на этот месяц, но я не могу понять, как изменить это на эту неделю (с понедельника по воскресенье).
Я могу изменить список, изменив дату на сегодняшнюю и добавив, например, дни. Я попробовал некоторые вещи с Utilities.formatDate, но это дает мне номера недели, без дат. Я понятия не имею, как получить текущую неделю.
function listEvents2() {
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
var events2 = CalendarApp.getDefaultCalendar().getEvents(firstDay, lastDay);
var data2 = [];
data2.push("Deze maand: ");
if (events2 && events2.length > 0) {
for (i = 0; i < events2.length; i++) {
data2.push(events2[i].getTitle()+' : '+Utilities.formatDate(events2[i].getStartTime(),Session.getScriptTimeZone(),"dd MMMM HH:mm")+' - '+Utilities.formatDate(events2[i].getEndTime(),Session.getScriptTimeZone(),"HH:mm"))
}
return data2;
}
else {
return ['No events found','',''];
}
}
Мне бы хотелось несколько советов, как этого добиться.
Редактировать: Может быть, мне нужно объяснить больше. Эта функция используется для персональной панели планирования недельного планирования с помощью HtmlService. Есть еще одна функция, которая выдает список сегодняшних событий.
Редактировать 2: Вот мой рабочий код:
function email() {
var date = new Date();
var day = date.getDay();
var firstDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+1);
var lastDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+8);
var events2 = CalendarApp.getCalendarById(CalendarID).getEvents(firstDay, lastDay);
var data2 = [];
data2.push("<b>Title</b>");
if (events2 && events2.length > 0) {
for (i = 0; i < events2.length; i++) {
data2.push(Utilities.formatDate(events2[i].getStartTime(),Session.getScriptTimeZone(),"EEEE dd/MM")+ ' ' + Utilities.formatDate(events2[i].getStartTime(),Session.getScriptTimeZone(),"HH:mm") +'<br/>'+events2[i].getTitle())
}
return data2;
} else {
return ['Nothing to do'];
}
}
Я решил разделить списки по календарю, чтобы сделать его более организованным. Но оба ответа ниже работают.
Есть еще две вещи, которые мне нужно выяснить. Во-первых, я могу заставить
Session.getScriptTimeZone(),"EEEE dd/MM")
показывать EEEE на своем родном языке вместо английского.
Другое - то, что функция дает идеальный список действий, но пропускает пустые дни. Я хотел бы отобразить пустые дни, так как панель должна функционировать как планировщик представления календаря.
Спасибо за помощь!