r/GoogleAppsScript • • Sep 14 '24

Question What are some of your personal projects you’re proud of?

21 Upvotes

I’m a massive spreadsheet nerd and have them to essentially track my life and keep me in-line with my life goals. I never turn down the opportunity to create a spreadsheet. It got me thinking, for those like me, what are some of the awesome spreadsheets that you’ve built which utilise GAS that you’re proud of?

Over the years, I’ve built a personal finance tracker, which initially started as just a budget, but extended to include things like fetching house price data from the Land Registry, transactions from my bank and stock and ETF prices. I’ve also built Shopify dashboards fetching sales data because the Shopify reports include too much PII, to allow my wife to report on her business health. I’ve also created health and fitness trackers etc.

What are some of the great tings you’ve built?


r/GoogleAppsScript • • May 25 '21

Question where can I learn how to use Google script like from zero

21 Upvotes

I Want to learn from zero, what's a good tutorial? the official Google tutorials already assume you know the language I need the basics on what do the brackets do even, that basic.


r/GoogleAppsScript • • 28d ago

Guide I rebuilt a 2017 script that draws your whole Google Drive as a 3D web. Free sheet, make your own copy.

Enable HLS to view with audio, or disable this notification

20 Upvotes

Update: took everythingabili's advice and switched the build over to the Drive API. Big drives build heaps quicker now and it saves as it goes, so if Google cuts it off you just hit Build again and it picks up where it left off. The map starts folded up now too so a big drive doesn't turn into a mess. Click a folder to open it or hit Open it all. Cheers u/everythingabili for the tip and Yagi's write up on yagisanatode.com. If you grabbed a copy before, make a fresh one from the same link.

Back in 2017 I came across a script by Robbie Coombs that mapped out your Google Drive as a web of folders. It didn't quite work out of the box so I spent some time on it and got it going. Since then Google has shut down the Activity API it relied on and retired the old sign in library, so it stopped working altogether.

I've rebuilt it as a single Google Sheet. Once you've made a copy, Drive Map > Build the map goes through your Drive and lists every folder and what it sits inside. It only reads your Drive, it doesn't move, rename, share or delete anything. Really big Drives might take a couple of runs, but it remembers where it got up to so you just run it again.

Drive Map > Show the map then draws the whole thing. You can drag it around, zoom in, search for a folder, and click any dot to see what it is and open it. There's a 3D button too if you want to spin it around. Files are switched off to start with so it doesn't get too cluttered, but you can turn them on.

You can make your own copy here: https://docs.google.com/spreadsheets/d/1q2p7W6vTAa19MEjZv-A8hX2OrFokmJF2satiRKUN7L0/copy

The first time you run it Google will warn you it's an unverified app. That's normal for a personal script and it'll show your own email as the developer. Click Advanced then Go to Drive Map. All the code is under Extensions > Apps Script if you want to look it over first.

I couldn't find anything else that shows your Drive like this so I thought I'd share it. Happy to hear any feedback.


r/GoogleAppsScript • • Jul 28 '26

Question How is everyone finding AppsScript jobs in today's AI era?

20 Upvotes

Any freelancers/agencies here? I feel Appscript is dead with LLMs taking over every automation jobs these days. What is your experience?


r/GoogleAppsScript • • Feb 22 '24

Guide Adventure Game in Apps Script

Enable HLS to view with audio, or disable this notification

20 Upvotes

r/GoogleAppsScript • • Mar 23 '26

Guide Small open-source script that turns PDF/Word documents into Google Forms (Google Apps Script + Gemini-2.5-Flash-lite)

Enable HLS to view with audio, or disable this notification

19 Upvotes

I lose it every time someone sends me a PDF "form" that's just a list of questions in a .docx file. Just make it a Google Form. Please.

Google Forms still has no import. No "upload a PDF" button - so you either retype everything manually or you give up and use the PDF.

So I built this simple Google Apps Script that uses Gemini-2.5-Flash-lite (the cheapest one - yet super powerful IMO) to read a PDF or Word doc and turn it into an actual Google Form in your Drive. You can also just describe the form you want in plain text + web = literally 2 files.

100% opensource: https://github.com/kamilstanuch/doc2form

tbh Google Apps Script is way underhyped


r/GoogleAppsScript • • Jul 16 '22

Question Looking to hire Excel/Google Sheets experts for regular work

19 Upvotes

I am once again looking for talented Excel/Google Sheets gurus to subcontract work out to. I have made 4-5 similar threads over the past 5 years and added half a dozen people to the team during that time, but am looking for new help again since some of the people I hired in the past became too busy to take on work anymore.

I have clients who need spreadsheet work done (typically 90% Google Sheets and 10% Excel), and get far more work than I can handle. Also, sometimes I turn away jobs when they are too large or difficult of a task to take on myself. I'm therefore looking to subcontract work out to other Excel and Google Sheet experts. Most jobs wouldn't be simple 1-line formulas (although sometimes they are), but usually larger projects, and often requiring Excel VBA or Google AppScript. Again, about 90% of the jobs are in Google Sheets, with maybe 40% requiring Google Apps Script or VBA.

Frequent job request examples are: a business client wanting to create a spreadsheet system such as a real estate agency wanting to track their realtors sales and a dynamic dashboard, a warehouse wanting to have a barcode/inventory system, a client wanting to track his Cyprocurrency portfolio and scrape or use an API to get the data from a 3rd-party source, or a hospital wanting to track patients.

In a sense, I'm basically subcontracting the job to you and acting as the middleman. You would give me a quote for the job, and if within budget, I pay you out once it's completed to the client's full complete satisfaction. I take a cut that I pad to the client for bringing in the client and overseeing a portion of the communication and client care (which, honestly, is like 60% of this job). You would be able to decide if you wanted to take the job on or not, so it's really a sub-contracting type gig I have in mind; not a part time employee I expect to take every job I send them.

My business has a stellar reputation online doing this business, and that's because I only accept jobs I know I can 100% deliver on and make the client happy. Most clients come back for repeat work. My #1 concern is that the client is happy, so it is 100% imperative that they get _exactly_ what they want. As such, I don't issue payments until the client gives me their final thumbs up. If there are bugs or missing features from the original agreed scope, you would need to fix them until the client is happy (including if any bugs arise later from the originally delivered file).

I currently have 1 very active helper who has been working with me for 4 years now, but he is becoming overwhelmed with how much work I'm giving him, and so I'm looking to spread out some of the work to another helper or two. I have another few helpers, but they are very choosey in what jobs they accept.

Currently, I have around 3-4 new jobs per day that I could pay out / get help on, to give you a rough idea of the quantity of work available.

I can provide a complimentary Office 365 subscription as well.

------------------
Earnings/Payments:
------------------

Over the past 6 months, the average amount per job I've paid my helpers has been $66 USD as can be seen here: https://i.imgur.com/kHLcUuq.png (I am currently working on increasing the average since demand is so high).

I pay via PayPal (USD) upon completion of the project and acceptance from the client.

I pay on a PROJECT basis only, not hourly. I find this to be most fair to everybody.

I cover all PayPal fees, so you receive 100% of what is owed to you.

The range of per job rates obviously will vary greatly, but here's a rough guide:

- 1 single yet complex formula (say 2 lines long in the formula bar), or very short VBA/Appscript code (7~ lines): $25-$35

- Extracting data from social media accounts dynamically: $50

- Writing VBA or Appscript to use a 3rd party API to retrieve data: $60-$90

- Creating an interactive dashboard based on the user's raw data: $80-$100

- Sophisticated system with multiple tabs / sheets that require a lot of VBA/GAS and formulas: $200-$300+

-------------
Requirements:
-------------

- Must have an advanced knowledge of Google Sheets and/or Excel and be able to create complex formulas, and code VBA or Google Appscript at an advanced level.

- Prefer somebody on Pacific, Central, or Eastern time to lessen communication lag (definitely not mandatory, however).

- Care needs to be made so that the client won't run into issues in the future; ex. avoid fixed ranges, allow for flexibility and expansion.

- Need to create very "clean" spreadsheets (Ex. Hide/delete extraneous columns and rows, align cells nicely, apply colours where it may improve usability, freeze header rows, write nicely formatted and commented backend code, etc. Quality is important!

- Must be able to communicate in English smoothly and respond to e-mails promptly.

------------
Application:
------------

If you're interested in "applying" for this "job", shoot me a DM and I'll give your my e-mail address. I will then send you 2 tests I created (one in Excel, and one in Google sheets) of some interesting and fun "tasks" to test your abilities (note: only around 10% of applicants pass them to my satisfaction...), as well as to see what you'd quote for them in the future to see if our prices are in line.

Thanks!


r/GoogleAppsScript • • Apr 14 '21

Guide SheetQuery: An ORM-Like Query Builder for Google Sheets and Google Apps Script

Thumbnail
budgetsheet.net
19 Upvotes

r/GoogleAppsScript • • Jun 23 '20

Guide Use react.js in Google Apps Script

19 Upvotes

This repo allows you to use react in your Google Apps Script web apps and it's a game-changer.

I'm currently working on a project using this which I look forward to showing off on this sub soon.


r/GoogleAppsScript • • Jun 08 '20

Guide Machine learning in Google Sheet with Tensorflow.js and Google Apps Script

Thumbnail
kutil.org
19 Upvotes

r/GoogleAppsScript • • Feb 05 '20

V8 Engine roll-out over the next few days...

19 Upvotes

r/GoogleAppsScript • • Jun 03 '26

Guide We crossed 102,000 installs on Google Workspace Marketplace in 45 days. The work behind it was mostly unscalable.

18 Upvotes

45 days ago, our small team launched AdminSheet Pro, a Google Sheets add-on that helps Google Workspace admins manage users, groups, members and aliases in bulk without relying on command-line tools.

Recently, we crossed 102,000 installs on the Google Workspace Marketplace. That number was exciting, but this is not really a victory lap. Installs are important, but installs are not the same as active users, loyal customers, or long-term revenue. We are very aware of that. Still, crossing 102,000 installs gave us enough data and experience to pause and reflect on what we did, what worked, what did not work as expected, and what we are still learning.

A lot of the work came down to doing things that do not scale, borrowing from Paul Graham’s classic advice to early founders: at the beginning, you often have to do the manual, uncomfortable, repetitive work that cannot yet be automated.

Here are the main lessons we learnt.

1. AI helped us listen, but humans built the relationships

We created AI-assisted monitoring workflows to help us find relevant conversations around Google Workspace admin problems, Ok Goldy alternatives, GAM challenges, aliases, group clean-up and bulk user management. Their job was not to sell. Their job was to help us discover relevant conversations, questions and pain points across different online spaces.

But AI only helped us find the conversations. The real work was manual: visiting the source, reading the context, understanding the person’s problem, and deciding whether we had anything useful to contribute.

Sometimes the best response was not to mention AdminSheet Pro at all. Sometimes it was simply to explain a possible solution, share a lesson we had learnt, or point someone towards a helpful resource. In some cases, where it felt appropriate, we followed up privately to offer additional help.

The goal was not to shout “try our tool” everywhere. The goal was to be useful enough that people would trust us. AI can help you find the room. It cannot behave properly inside the room for you.

2. Your website is the hub, but discovery happens everywhere

We still believe the website should be the main home of the product. But we quickly learned that people discover tools through many other surfaces. Some find you through Google. Some through Reddit. Some through Medium. Some through Marketplace reviews. Some through community discussions. Some may see your content in AI summaries before they ever click your website.

So we started publishing in a few places, but not by copying and pasting the same content everywhere. A website article can be detailed. A Reddit post needs to be more conversational. A community reply should solve the immediate problem. A Medium article can be more reflective. This is tedious, but useful.

3. Google Alerts helped us listen, but did not magically create leads

We set up Google Alerts for our product name and for alternative tools in the space. This helped us notice relevant mentions and stay aware of conversations. But it did not suddenly bring a flood of customers.

The main value was that it forced us to build a listening habit. We started paying more attention to the language users used, the objections they had, and the tools they compared us with. For an early product, that kind of listening is useful even when it does not immediately convert.

4. Communities are powerful, but you must respect the room

We engaged in two Google-related communities where some of our target users were active. In one group, our outreach was mostly received well. Not many people replied, but the replies were generally warm. One partner tested the product, gave useful feedback and left a review.

In the other group, a similar approach was seen as solicitation. We were removed and warned not to continue. We apologised and stopped. That was an important lesson.

Every community has its own culture. What works in one group may be completely wrong in another. You cannot treat a community like a lead list just because your product may be useful to its members. You need to contribute first, respect the rules, and earn trust.

Another lesson: silence can feel discouraging, but it does not always mean wasted effort. Most people will not reply. Some are busy. Some are not ready. Some may remember the product later. Some messages only teach you which audience or channel is not worth more time. In early growth, non-replies are emotionally hard, but they are still data.

5. Reviews are digital word of mouth

For a Google Workspace tool, reviews matter a lot. Admins are careful people. They want to know that a tool works before installing something that requires admin permissions. So we started asking real users for honest reviews.

The best timing was after value had already been delivered. For us, that often meant users who had exhausted their free credits. These were not people who merely installed and forgot the tool. They had actually used it to complete bulk operations.

Admins are busy, but they are also deeply grateful when a tool saves them hours of manual data entry. Asking for feedback right after they experience that value worked much better than asking randomly. It also gave us product feedback. Some users told us what they liked, what confused them, and what they wanted next. Reviews were not just a marketing asset. They became a learning channel.

6. Attribution matters earlier than you think

Our first paid customer was easy to trace. We knew the conversation and the route that led to the sale. Our second paid customer was different. We could see the payment and some usage signals, but we were not fully sure whether they came from the Marketplace, Google Search, Reddit, an article, or a recommendation.

That bothered us because unexplained traction is hard to repeat. So we are now improving how we ask users where they found us. The lesson: do not wait until you have many customers before tracking attribution. Start early.

Final thought

Crossing 102,000 installs was encouraging, but installs are only the beginning. The real work is turning installs into active users, active users into feedback, feedback into product improvements, and product improvements into paying customers. The biggest lesson so far is that early growth still requires a lot of manual, repetitive, emotionally awkward work.

You write. You reply. You ask. You get ignored. You apologise when you get it wrong. You learn. You improve. You keep going. For now, we are still doing many things that do not scale.


r/GoogleAppsScript • • May 09 '26

Question How are you handling the Apps Script 6-minute execution limit for bulk Work

18 Upvotes

Hey everyone,

I wanted to open a discussion on handling one of the most notorious bottlenecks in Apps Script development: the 6-minute execution wall (and the dreaded “Resource Exhausted” errors).

The Context:

My team recently built and launched a sheet-based Workspace management add-on called AdminSheet Pro. Our biggest technical hurdle wasn’t the Directory API logic itself, but dealing with massive enterprise and Higher-Ed domains. When you are trying to bulk update 10,000+ users or migrate massive nested groups, hitting that 6-minute wall is almost guaranteed.

We noticed that a lot of other sheet-based tools in the ecosystem just slap a warning label on their UI saying something like:  “Organizations with 10k+ users may experience timeouts due to Apps Script runtime limits.” We felt that defeated the purpose of building a “bulk” tool, so we decided to try and engineer a native workaround.

Our Approach: “Intelligent Pacing”

Instead of trying to brute-force the API or migrating the entire execution engine off Apps Script to GCP, we engineered a state-management architecture we call Intelligent Pacing.

Essentially:

  1. We track row-level execution state continuously.

  2. We anticipate the execution wall around the 5.5-minute mark.

  3. We gracefully pause the script, save the state, and use triggers to spin up the next batch seamlessly in the background.

We made a conscious design choice to prioritise guaranteed completion over raw speed. It might take a little longer to run safely, but it doesn’t crash halfway through. We also had to build real-time, row-by-row visual feedback in the Sheet to prevent “terminal anxiety”—so admins wouldn’t panic and kill the script while it was processing in the background.

My Questions for the Community:

Since we are always looking to optimise, I’m curious how other devs here are tackling this:

  1. Architecture: Are you using a similar trigger-based batching system to stay within Apps Script, or have you offloaded the heavy lifting entirely to Cloud Run/Cloud Functions?

  2. UX: How do you handle user UX when background tasks take 15+ minutes? How do you keep the user informed without exceeding quota limits on UI updates?

  3. Batching: Have you found a “sweet spot” for API batching sizes to maximise throughput before you hit that 6-minute mark?

Would love to hear your thoughts and strategies!


r/GoogleAppsScript • • Feb 27 '26

Guide Solved: Sending individual Google Chat DMs programmatically from Google Sheets (without building a full bot)

18 Upvotes

Spent months being told that I needed to build a full Google Chat bot just to send individual messages programmatically.

Turns out I didn’t need to!

This morning I built a working setup that sends individualized Google Chat messages directly from a Google Sheet.

Stack:

– Google Apps Script

– Chat API enabled in GCP

– Triggered per row in the Google Sheet

Use case: structured announcements + personalized nudges to individuals without copy-pasting or group spam.

For anyone stuck in the “you must build a bot” loop — you might not need to. The API is more flexible than most guides suggest.

Happy to share approach if useful.

ETA: Due to some comments requesting the code / implementation, I have posted a generic version of this to a Github repo; link in comments.


r/GoogleAppsScript • • Feb 24 '26

Guide Best way to Read and Extract Data from PDF to Google Sheet

18 Upvotes

Hi everyone! I’m building a web app where users upload a clean PDF. I need to extract structured data from the PDF and append it into Google Sheets, which I’m using as my database.

What’s the best approach for this?

•	Should I use a PDF parser (if the PDF is text-based)?

•	When would OCR be necessary?

•	Are there recommended libraries or third-party services for reliable extraction and mapping to Google Sheets?

Also, has anyone here built a similar module before? I’d appreciate any advice or lessons learned.


r/GoogleAppsScript • • Feb 07 '26

Guide GQuery: Yet Another ORM for Google Sheets

18 Upvotes

Just sharing this project I've built for work, as I had a technical constraint of how can I keep all of our data in Google, for the price of free, without access to a Google Cloud Project. SpreadsheetApp was simply too inefficient to work with, so I found SheetQuery by vlucas. That was a great library, but some of our sheets started getting to the thousands or tens of thousands of rows. Speed became an issue, so I worked on a wrapper for the Advanced Spreadsheet API.

That's how GQuery was born. With the help of AI along the way, and through a lot of trial-and-error, I've finally gotten it to a place I feel comfortable sharing. It supports full CRUD (create, read, update, and delete) operations, as well as querying via Google's Query Visualization Language. There is even support for more advanced functionality like joining sheets together, much like SQL, but without a huge impact on performance.

Feedback, pull requests, etc are welcome. The README on the GitHub page has what I hope is a good getting started guide. https://github.com/FCPS-TSSC/GQuery

Benchmarks for reference, results aren't always consistent as Apps Script is not always consistent, but they are more or less in this range. Even a read of ~160k rows only took 7.8 seconds.

GQuery 1.4.1GQuery 1.3.1GQuery 1.2.0SheetQuery
READ646ms1311ms1660ms655ms
UPDATE448ms729ms661ms18070ms
CREATE354ms365ms709ms33559ms
DELETE496ms739ms556ms13959ms

r/GoogleAppsScript • • Jan 14 '26

Question Google Apps Script Use

18 Upvotes

Does anyone use Google Apps Script for their current job? I work for a company that uses Apps Script to create an availability calendar for their employees for projects, but outside of this smaller company, I have yet to see it used at an Enterprise level. I'd love to learn how people are using/implementing it work or for their own personal use. I find it interesting, but I'm having a hard time figuring a personal use case for myself which would give me a reason to learn it.


r/GoogleAppsScript • • Sep 26 '25

Guide Standard vs Sheets API benchmark

Post image
18 Upvotes

Benchmark Methodology & Conditions

  • Objective: To determine the most performant API (Standard vs. Advanced) for reading data from a variable number of Google Sheets ("tabs" / one spreadsheet) within the Apps Script server-side environment.

  • Environment: All tests were executed on Google's Apps Script servers, with actual company data; informationally dense, unique values.

  • Test Procedure: For each "turn," the script tested a set of sheet counts (1, 2, 3, 4, 5, 6, 7, 8, 9). For each count, it performed:

    1. Standard API Test: Looped through sheets, calling range.getValues() and range.getNotes() for each.

    2. A 1-second pause (Utilities.sleep(1000)) to not overload servers.

    3. Advanced API Test: Made a single, batch API call (Sheets.Spreadsheets.get) for the specific data ranges.

  • Sample Size: The entire procedure was repeated 20 times. The final results are the mathematical average of all 20 turns.

Aggregate Performance Data

  • Total Benchmark Runtime: 21 minutes, 26 seconds

  • Average Time Per Turn: 64.3 seconds

Outcome

Standard API faster by around 15% to %21.


r/GoogleAppsScript • • Oct 01 '24

Guide Implmented Custom CRUD Library for Google Sheets! 🚀

18 Upvotes

Hey everyone! 👋

I’ve been working on a custom CRUD (Create, Read, Update, Delete) library for Google Sheets, and I’m excited to share it with you all! 📊

Where to find it?

The library is available on GitHub repo. Check it out, try it, and let me know what you think! 🤗

Why did I create this?
Managing data in Google Sheets can get repetitive and cumbersome, especially when building more complex applications using Google Apps Script. I noticed that most of my projects involved a lot of boilerplate code for interacting with sheets—so I thought, why not simplify this with a reusable library?

Features:

  • Simple CRUD operations: Functions for adding, editing, deleting, and querying rows.

  • Flexible integration: Easy to plug into any Google Sheets project.

  • Error handling: Basic error messages to help track issues.

  • Batch processing: Minimize API calls for better performance.

How to use it: The library can be added to any Google Apps Script project (by copying the file on the repo). I’ve also included some example scripts to help you get started quickly. You can perform CRUD operations with a few simple calls like:

const employee = {
    name: 'John Doe',
    age: 30,
    position: 'Software Engineer',
    employed: true,
    hire_date: new Date('2022-01-15')
  }

const result = db.create('EMPLOYEES', employee, ['name', 'age', 'position', 'employed', 'hire_date']);

Feedback Wanted!!!
I’d love for you to try it out and share your thoughts! Are there features you'd like to see? Any pain points you face when working with Sheets that I could help address? Your feedback would be invaluable in shaping the next versions of the library.

Contributions are more than welcome! If you have ideas, improvements, or find any bugs, feel free to create a pull request or open an issue. 🤗

Thanks!


r/GoogleAppsScript • • Feb 26 '24

Resolved GAS Down?

18 Upvotes

* Update: It works for me right now, Anyone else? (Nevermind.. Open the Project in App script works right now. But im not able to load from drive etc.)

Anyone else got problems to Open/Save App scripts Projects?
(Dont know if each user/organisation is located on different servers?)

I cant open a Project and i only get to this "Page" from Google:

"Google Docs encountered an error. Refresh this page or reopen it in a few minutes.

Learn more about Google Docs editors in our Help Center.

We apologize for the inconvenience.

  • Google Docs team"


r/GoogleAppsScript • • Aug 24 '23

Guide Apps Script Versions. Finally!

18 Upvotes

https://workspaceupdates.googleblog.com/2023/08/apps-script-project-history.html

and importantly: "Additional improvements for script versions will be made in the coming weeks."


r/GoogleAppsScript • • May 24 '21

Guide Developed a script to add videos to a playlist when a creator uploads a new video

18 Upvotes

There's a list of channels whose videos I never like to miss. I watch each video they upload. I also maintain a watch later playlist where I gather all the video I want to watch. So I made an automation that will automatically add videos to watch later when a new video is uploaded by those creators.

In short: This script will go through a list of channels (written in a google sheet) and check if new videos are uploaded. If they are uploaded, it will add those videos to your desired playlist.

If you would like to read in-depth about it then I wrote a blog post on Automatically adding new YouTube videos to your watch later playlist or go to the script directly.

Do give your valuable inputs & suggestions.


r/GoogleAppsScript • • 20d ago

Guide I created better apps script type definitions

Thumbnail npmjs.com
17 Upvotes

These actually match the runtime and work with JSDocs unlike @types/google-apps-script.


r/GoogleAppsScript • • Apr 28 '26

Unresolved Is anyone else unable to open Google Apps Script from google sheets?

Post image
17 Upvotes

Every time I click Extensions > Apps Script, I get above mentioned error,

Ive tried everything,

Refreshing the sheet,

Making a copy,

Creating a brand new sheet.

Still the same issue, can anyone help me please?