How to build a two-stage approval workflow with Google Forms

You will build a Google Forms and Google Sheets workflow that emails a manager, then a final approver, and lets each one approve or reject with a single click. It suits small teams handling purchase requests, leave applications, bookings or claims. You need a Google account and some comfort editing an Apps Script.

Google Forms 2-Stage Approval Workflow | Complete Setup Guide, by SheetSmarts on YouTube. 5 min 22 s.

Video length
5 min 22 s
Time to do it
45 minutes
Difficulty
Medium
Steps
8

What you need

Steps

  1. Create a Google Form with fields for requester name, email, item or reason, amount, manager email and final approver email. Open the Responses tab and link the form to a new Google Sheet.

  2. In the linked Sheet, add columns for Status, Stage 1 approver and Stage 2 approver. Keep the header names exact, because the script reads and writes these cells.

  3. Open Extensions, then Apps Script. Add an installable onFormSubmit trigger so the script runs every time someone submits the form.

  4. In the script, use MailApp.sendEmail to send the manager a message holding two links, one to approve and one to reject. Put the row number and a secret key in each link.

  5. Deploy the script as a web app that runs as you and is accessible to anyone. Your approve and reject links point to this web app URL.

  6. Write the doGet function to read the link parameters, check the secret key and update the Status cell to Approved or Rejected.

  7. When stage one is approved, have the script email the final approver with the same two links. When it is rejected, email the requester with the outcome instead.

  8. Submit a test entry using your own email addresses. Click the approve and reject links and confirm the Sheet status and the emails change as expected.

Tips and common mistakes

Put a random secret string in every link so nobody can change a status by guessing row numbers.

Wrap the status update in LockService so two quick clicks cannot overwrite each other.

Add a timestamp column so you can see when each approval stage was actioned.

Run the script once from the editor to grant permissions before you test the form trigger.

Questions

Do I need to know how to code?

A little. The logic is short, but you do need to paste and adjust a script, so basic JavaScript helps.

Can approvers approve from their phone?

Yes. The links open in any browser, and no Google sign-in is needed if the web app is set to be accessible to anyone.

What if an approver's email address is wrong?

The email bounces and the request stalls. Add the approver emails as form questions so the requester confirms them at submission.

This guide was drafted from the video's details and general task knowledge. It has not been checked against the full video. Check the video and relevant product instructions before following a procedure. Report a correction.

More in Apps & Software

See all