Input
Add an absence
Choose periods
Output
Weekly cover overview
Publish
Google Sheet live update
Recommended: use a Google Sheet as the live document staff check. Paste a Google Apps Script web app URL here, then press update when the weekly overview is ready.
Google Sheet setup script
Create a Google Sheet, copy its Sheet ID from the URL, open Extensions → Apps Script, paste this script, replace PASTE_YOUR_SHEET_ID_HERE, then deploy as a Web App.
const SPREADSHEET_ID = 'PASTE_YOUR_SHEET_ID_HERE';
function doGet() {
return jsonOutput({ ok: true, message: 'Cover Sheet script is live' });
}
function doPost(e) {
try {
const payload = JSON.parse(e.postData.contents || '{}');
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheetName = 'Week ' + payload.week;
const sheet = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);
const rows = [['Day','Period','Time','Absent teacher','Lesson','Cover','Cover note']];
(payload.rows || []).forEach(r => rows.push([
r.day || '',
r.period || '',
r.time || '',
r.absentTeacher || '',
r.lesson || '',
r.coverName || '',
r.coverNote || ''
]));
sheet.clear();
sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
sheet.getRange(1, 1, 1, rows[0].length).setFontWeight('bold');
sheet.setFrozenRows(1);
sheet.autoResizeColumns(1, rows[0].length);
return jsonOutput({ ok: true, week: payload.week, rows: rows.length - 1 });
} catch (err) {
return jsonOutput({ ok: false, error: String(err) });
}
}
function jsonOutput(obj) {
return ContentService
.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}