В этот лист ,
Из редактора скриптов у нас есть форма HTML, которая отправляет даты и время на лист.
Цель - проверить с приложением календаря, если в представленном диапазоне времени есть какие-либо события.
Проблема заключается в том, что приложение календаря считывает отправленные даты и время в виде строки / текста, а не даты и время, и возвращает ошибку
Не удается найти метод getEvents (строка, строка)
Я вручную изменил входные данные с 2020-02-21T18: 00 на 2020-02-21 18: 00: 00 , протестировал код и все заработало. Итак, я предполагаю, что проблема в формате значений времени и даты, представленных в форме
Общий файл является редактируемой версией, не стесняйтесь редактировать и исправлять. Заранее спасибо:)
Скрипт Google Apps
function doPost (e) {
Logger.log(JSON.stringify(e))
if (!e || !e.parameter) {
return;
}
var lock = LockService.getScriptLock();
lock.tryLock(10 * 1000);
try {
// Form response sheet
var doc = SpreadsheetApp.getActive();
var sheet = doc.getSheetByName(sheetName);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow() + 1;
var newRow = headers.map(function(header) {
return header === 'Timestamp' ? new Date() : e.parameter[header]
});
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);
// Get all events for the time range
var startTime = newRow[1];
var endTime = newRow[2];
var cal = CalendarApp.getCalendarById("###");
var allEvents = cal.getEvents(startTime, endTime);
if (allEvents.length > 0) {
return ContentService
.createTextOutput(JSON.stringify('Not Available. Thanks'))
.setMimeType(ContentService.MimeType.JSON)
}else {
return ContentService
.createTextOutput(JSON.stringify('Available. Thanks'))
.setMimeType(ContentService.MimeType.JSON)
};
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
HTML:
<!DOCTYPE html>
<html lang="en">
<body>
<form name="Class1" id="Class1" action="https://script.google.com/macros/s/###/exec" target="_blank" method="POST">
Start Date & Time
<input type="datetime-local" required name="Start Date & Time">
End Date & Time
<input type="datetime-local" required name="End Date & Time">
<button type="submit">Check</button>
</form>
</body>
</html>