Back to BlogAutomation

Skip the Add-on: Build a Google Forms Approval Workflow in 30 Minutes

Build an automated Google Forms approval workflow in 30 minutes using Apps Script—route requests to managers and eliminate manual email back-and-forth.

December 22, 2025
4 min read

Skip the Add-on: Build a Google Forms Approval Workflow in 30 Minutes

Your manager just forwarded you a time-off request buried in a 47-email thread from three weeks ago. By the time she approves it, the employee's already on vacation. Google Forms dumps submissions into a spreadsheet and calls it done—no routing, no notifications, no approval logic.

Here's the fix: 30 minutes of Apps Script gives you automated manager sign-off without installing a single add-on.

Forms Create Paperwork, Not Workflows

Your current process:

  • Employee fills out Google Form
  • You manually check the responses sheet (or worse, rely on email alerts)
  • You email the manager to approve/reject
  • Manager replies in a separate thread
  • You update the spreadsheet by hand
  • You email the employee the decision

Real cost: 15-20 minutes per approval. At 8 requests per week, that's 2.5 hours wasted on administrative ping-pong.

The Form Workflow Plus add-on (72K+ installs) proves demand exists—but you don't need it. Apps Script's onFormSubmit trigger handles approval routing natively. You own the code. Zero monthly fees.

Apps Script Watches Your Form

When someone submits a Google Form, Apps Script fires a trigger. Your script grabs the submission, logs it to Sheets, and emails the manager with approve/reject links. Manager clicks a link, the script updates the sheet, employee gets notified. Done.

The stack: Google Form → Apps Script onFormSubmit trigger → Google Sheets (audit trail) → GmailApp (notifications).

// Pseudo code for the application 
FUNCTION onFormSubmit(submissionEvent)
  GET Sheet 'Responses'
  EXTRACT [Timestamp, Employee, Type, StartDate, EndDate, Reason] from event
  
  GET Manager Email
  CONSTRUCT Approve/Reject Links (calling Web App URL)
  
  SEND Email to Manager
    SUBJECT: "Approval Needed: {Employee} - {Type}"
    BODY: "Dates: {Start} to {End}\nReason: {Reason}\n[APPROVE LINK] | [REJECT LINK]"
    
  UPDATE Sheet Status to 'Pending'
END FUNCTION
// Pseudo code for the application 
FUNCTION doGet(request)
  GET Action (approve/reject) and Row Number from URL Parameters
  
  VALIDATE Action and Row
  
  GET Current Status from Sheet
  IF Already Processed THEN RETURN "Already {Status}"
  
  UPDATE Sheet Status to 'Approved' or 'Rejected'
  
  SEND Notification to Employee
    SUBJECT: "Request {Status}"
    
  RETURN HTML "Request has been {Status}"
END FUNCTION

OAuth scope: https://www.googleapis.com/auth/gmail.send (Apps Script prompts on first run)

Quota: Consumer accounts get 100 emails/day, Workspace accounts get 1,500/day. At 8 approvals/week (16 emails), you're using 1% of consumer quota or 0.1% of Workspace quota.

The Flow

Deploy in 8 Steps

  1. Create your Google Form with fields: Employee Name, Request Type (dropdown), Start Date, End Date, Reason
  2. Link to a Google Sheet: Form responses → "View responses in Sheets"
  3. Add Status column: Insert column G, header "Status"
  4. Open Apps Script: Extensions → Apps Script in the spreadsheet
  5. Paste the code above: All three functions
  6. Set manager email: File → Project properties → Script properties → Add: Property: MANAGER_EMAIL, Value: manager@company.com
  7. Deploy as web app: Deploy → New deployment → Type: Web app → Execute as: Me → Access: Anyone in your organization → Deploy
  8. Create trigger: Triggers (clock icon) → Add Trigger → Function: onFormSubmit → Event source: From spreadsheet → Event type: On form submit → Save

Test it: submit your form. Manager gets email within 30 seconds. Click approve. Sheet updates. Employee gets confirmation.

Multi-department routing: If different managers approve different request types, add Script Properties for each (MANAGER_EMAIL_HR, MANAGER_EMAIL_FINANCE) and use an if statement after line 15 to route based on request type.

Build vs Buy: 30-Day Math

DIY Form Workflow Plus
Setup 30 minutes 5 minutes
Cost $0 forever ~$8/user/month
Customization Unlimited Limited
Risk None Vendor shutdown, price hikes

Break-even: After 1 month, you've saved $96 annually. After 3 years, that's $288 per workflow.

Build it yourself if you have 30 minutes and need custom routing (department-specific approvals, multi-level sign-off, compliance audit trails).

Buy the add-on if you need it live in 5 minutes and your manager won't wait for OAuth scopes.

Three Things You Stop Doing Monday

  1. Stop manually forwarding form submissions — the onFormSubmit trigger routes the second the form is submitted
  2. Stop losing approval requests in email — your Sheets tab is now a permanent audit trail with timestamps
  3. Stop paying monthly fees for basic workflows — this code costs nothing and runs inside your existing Google Workspace

Ready to build? Use the code above and follow the 8 steps. If it doesn't work after setup, book a call—I'll have it running in your workspace by Friday. 30-day warranty included.

Related Industry Guides

Automate student enrollment with Google Workspace. Digital registration forms, document collection, and automated class assignment workflows.
Automate event management with Google Workspace. Handle registrations, send reminders, and track attendance automatically.
Automate volunteer coordination with Google Workspace. Schedule shifts, track hours, and communicate with volunteers automatically.
Automate real estate client onboarding with Google Workspace. Digital forms, document collection, and automated welcome sequences that save 10+ hours per week.

Need a Custom Automation Solution?

We specialize in building tailored Google Workspace automations for businesses of all sizes. Let us help you eliminate repetitive tasks and streamline your workflows.

Google Forms integrationApps Script automationworkflow automationbusiness automationprocess automationGoogle Sheets automationadmin workflowtime savings