Google Apps Script Engineer + Sheets Systems Builder

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

WAGE / SALARY

PHP 50,000–90,000/month (~$900–$1,600 US

HOURS PER WEEK

30

DATE UPDATED

Jun 21, 2026

JOB OVERVIEW

SALARY: PHP 50,000–90,000/month (~$900–$1,600 USD)
HOURS: Project-based to start, with a path to an ongoing seat


I'm hiring one person to automate and connect a multi-tab Google Sheets system that runs a live operation. The architecture is already well-built — tracking tasks, launches, shifts, payroll, and testing across a large structure.


I don't need it rebuilt. I need it automated, connected, and rolled up — surgically, without breaking what works.

If you stop at VLOOKUP, this isn't your seat. If you build scripted automation AND clean multi-sheet data systems that feed dashboards and run themselves — keep reading.

---

The work — two sides, both matter:

1) Apps Script automation (`.gs`)
- Write and maintain Apps Script across a multi-tab system
- Build **triggers** — onEdit, time-based, onChange — for live workflow automation
- Diagnose and fix broken logic (a contained payroll-calculation bug is the first real task)
- Add validation, flagging, alerting, scheduled summary emails
- Connect Sheets to **external APIs** with auth + error handling where needed

2) Advanced formulas + sheet-to-dashboard data systems
- Build **multi-sheet data connections** — worker sheets rolling up into a **master dashboard**
- Fluent with **QUERY, IMPORTRANGE, INDEX/MATCH, ARRAYFORMULA, FILTER, pivot logic** — the formula stack that moves and aggregates data cleanly across tabs
- Design **data-collection flows**: individual input sheets ? consolidated master view, live and accurate
- Build dashboard views that summarize operational data (performance, labor, output) in real time

Always: build on a copy, test, then deploy. Non-negotiable.** Document everything so it stays maintainable.

---

**Non-negotiables —**

- **Real Apps Script experience** — actual `.gs` code, not just formulas
- **Advanced formula fluency** — QUERY, IMPORTRANGE, ARRAYFORMULA, INDEX/MATCH at a systems level, not single-cell
- Can build **sheet-to-sheet and sheet-to-dashboard data pipelines** that stay accurate at scale
- Can read an existing system and **extend it without breaking it** — surgical, not destructive
- Clean, documented, maintainable work
- Sharp communication, reliable availability, stable setup

**You stand out if —**

- You use **clasp** for local Apps Script development
- You've done **Apps Script + external API** integration (REST, OAuth)
- You've built **master-dashboard rollups** from multiple input sheets
- You've automated **real operational systems** — payroll, tracking, reporting — not toy demos

---

**How to apply (follow exactly — skip a step and you're deleted) —**

The instructions are the first test. I read every application that follows them. I ignore every one that doesn't.

1. Put **SCRIPT** at the very top, so I know you read this in full.
2. Share **2–3 projects you personally built** — must show **both** real `.gs` work **and** a multi-sheet/dashboard data system. Link code (GitHub/Gist), a Loom walkthrough, or a working sheet copy.
3. In 2–3 sentences: **describe one thing you automated with Apps Script that a formula couldn't do** — name the trigger and the logic.
4. In 2–3 sentences: **describe a time you connected multiple sheets into one master dashboard** — what formulas/method you used and how you kept the data accurate.
5. In one line: **how do you test before touching a live system?**

Nail this and you move to a paid test task — a small, real automation or data-connection job on a copy of my sheet. Nail that and we scope the full build.

I'm hiring one person. Show me you can both script and build clean data systems.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0012
Controller Execution Time ( Jobseekers / Job )  0.0284
Total Execution Time  0.0305
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,505,656 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/google-apps-script-engineer-sheets-systems-builder-1673067
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0211 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0014   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1673067
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 827084
 LIMIT 1 
0.0127   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1673067
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-30',ej.date_added) duration_daysDATEDIFF('2026-06-30',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-30',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1673067' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1673067 
0.0007   UPDATE employer_jobs SET hit_counts '***Jun-21-2026=1389***Jun-22-2026=149***Jun-23-2026=79***Jun-24-2026=26***Jun-25-2026=21***Jun-26-2026=7***Jun-27-2026=7***Jun-30-2026=2' WHERE job_id'1673067'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jun-2026=1680' WHERE job_id'1673067'  
0.0002   SELECT date_sent
                FROM 
`jobseeker_sent_emails`
                
WHERE jobseeker_id NULL
                  
AND job_id 1673067
                  
AND status LIKE 'sent%'
                
ORDER BY id DESC
                LIMIT 1 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1673067 
0.0029   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '827084'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)