"Leave Approved — Calendar Updates Itself" — Google Apps Script Integration
The situation
After a leave request is approved, HR still has to manually update the Google Calendar or leave tracking spreadsheet — time-consuming and error-prone.
By connecting an API node to Google Apps Script, the moment a request is approved, Google Sheets automatically gets a new entry. HR doesn't have to do anything manually.
Workflow design
Employee submits leave request
(leave type, start date, end date, coverage person, reason)
↓
Direct manager review
↓
[Approved] → API Node: calls Google Apps Script
→ writes to leave tracking Google Sheet
→ Complete
[Rejected] → Workflow endsWhat to tell SuperAdmin Agent
"Create a leave request workflow. Employees fill in: leave type (Annual / Sick / Personal / Other), start date, end date, coverage person (select org member), and reason.
Submitted to the direct manager for review. When approved, call a Webhook URL (I'll fill it in later) to automatically write the leave data to our Google Sheet. If rejected, the workflow ends."
Setting up Google Apps Script
In your Google Sheet, create an Apps Script to receive data from kikuflow:
// Google Apps Script - doPost function
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const sheet = SpreadsheetApp.getActiveSheet();
// Write leave data to the spreadsheet
sheet.appendRow([
data.employeeName, // Employee name
data.leaveType, // Leave type
data.startDate, // Start date
data.endDate, // End date
data.proxy, // Coverage person
new Date() // Record timestamp
]);
return ContentService.createTextOutput('OK');
}- In Apps Script, deploy as a "Web App" (Execute as: Me)
- Copy the deployment URL
- Paste it into the API node URL field in kikuflow
Data format sent by kikuflow
When an API node is triggered, kikuflow sends a POST request with the instance's form data:
{
"instanceId": "...",
"workflowName": "Leave Request",
"submittedBy": "Employee Name",
"fields": {
"leaveType": "Annual",
"startDate": "2025-03-10",
"endDate": "2025-03-12",
"proxy": "Bob Smith",
"reason": "..."
}
}Further applications
The same approach can be extended to:
- Automatically create an absence event in Google Calendar after approval
- Auto-email the coverage person
- Write to an HR system API