Paste your Google Apps Script Web App URL below. Records export automatically every day at 6pm EST. Setup guide β
O (Overtime) for the excess hours, with a separate R row for the first 8. Shifts β€ 8h use R only.
function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Add headers if sheet is empty
if (sheet.getLastRow() === 0) {
sheet.appendRow(['Date','Worker Token','Worker Name','Shift Title',
'Employer','Clock In','Clock Out','Hours Worked',
'Pay Rate','Total Pay','Job Type','Location','Shift ID','Export Date']);
}
var rows = data.records || [];
rows.forEach(function(r) {
sheet.appendRow([
r.date, r.worker_token, r.worker_name, r.shift_title,
r.employer, r.clock_in, r.clock_out, r.hours_worked,
r.pay_rate, r.total_pay, r.job_type, r.location,
r.shift_id, new Date().toISOString()
]);
});
return ContentService.createTextOutput(
JSON.stringify({success:true, rows_added: rows.length})
).setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService.createTextOutput(
JSON.stringify({success:false, error: err.message})
).setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
return ContentService.createTextOutput('MMS Timesheet Webhook Active')
.setMimeType(ContentService.MimeType.TEXT);
}