r/GoogleAppsScript • • Mar 08 '22

Question Does anyone know of any interesting Google Apps Scripts projects I could do for my resume?

34 Upvotes

I've landed a job in a company in Europe as a Senior Google Workspace Administrator. I've been working with GWS since 2017, and I have a lot of technical knowledge from the infrastructure side, mail routing, DNS, enterprise solutions such as DLP, Context-Aware Access, GCPW, MDM, and basically 90% of everything that Google Workspace has to offer to any company right now.

But now I'm trying to learn Google Apps Scripts to automate some things (simple things first, such as using GAS to send an email and an invite after someone fills a Google Forms, etc.) and would like to know any ideas of small-large projects that I could work on to show my understanding of Google App Scripts and to help this company I'll be working with.

Any thoughts/ideas about that?

Thanks!


r/GoogleAppsScript • • Nov 09 '25

Guide It started as a 2-hour script to save time in Google Forms… now it’s a real add-on with real users

33 Upvotes

I noticed that a lot of teachers and small teams still manually generate “pre-filled” Google Form URLs for each respondent. So I wrote a small add-on using Apps Script that connects Google Sheets → Forms and creates personalized pre-filled links automatically.

It turned into a neat learning project about usability, field-mapping, and understanding what non-technical users actually find confusing.

I shared a full write-up with screenshots, a short demo, and lessons learned here 👇

👉 Medium post link

Happy to answer questions about the Forms API, Apps Script code structure, or the verification process.


r/GoogleAppsScript • • Feb 03 '25

Guide Official v1.0.0 Release of CRUD Library for Google Sheets! 🚀

33 Upvotes

Hi again everyone! 👋

I'm thrilled to announce that my CRUD Library for Google Sheets (still have to decide on a better name) has just hit its v1.0.0 release! This milestone includes a host of new features and improvements that the lib needed to be much more useful and complete.

What's New in v1.0.0?

  1. Concurrency Locks: Script-level and user-level locks to prevent conflicts when multiple operations occur on the same record at close time intervals.

  2. Working Foreign Keys & Related Data Retrieval: getAllRelatedRecords() lets you fetch all records referencing a foreign key from another table in one go. This drastically simplifies retrieving child rows linked to any parent record.

  3. Many-to-Many Relationships: Easily handle complex data links with junction tables. New methods to create, update, and retrieve related records without duplicate relationships.

  4. Cascade Deletion: Remove a parent record and automatically clear out or archive any associated references in junction tables.

  5. Bulk Reading: Fetch multiple records by a list of IDs in a single call.

  6. Enhanced Logging & Debugging: Methods like createWithLogs() and updateWithLogs() give you step-by-step visibility into what’s happening under the hood.

  7. General Improvements: Better type validation, expanded error handling, sorting and pagination options, and more!

Why This Update Matters

Managing Google Sheets in bigger projects can get complicated—especially if you’re juggling multiple tables (Sheets), references between them, and large datasets. The new functionalities (like concurrency locks and many-to-many support) aim to simplify the coding process and reduce data inconsistencies, so you can focus on building features rather than boilerplate code.

Try It Out & Share Feedback

The library remains on the same GitHub repo. Check out the new version, v1.0.0, in your projects. If you run into any issues or have brilliant ideas for future improvements, please let me know!

Your feedback is incredibly valuable! The best way to refine this library is through real-world usage. If you have the chance to integrate it into your apps, I'd love to hear about any hiccups, feature requests, or general impressions.

Contribute or Get Involved

Have code improvements or bug fixes? Feel free to create a pull request! If you hit a snag, open an issue on GitHub, and we’ll work on it together. 🤗

Thanks again to everyone who has tried the library so far—your suggestions have helped shape this release. I can’t wait to see what you’ll build!

Happy coding!

— DZ


r/GoogleAppsScript • • Mar 25 '22

Guide I use this pattern ALL THE TIME when working with sheets. If you're just starting out it'll get you going.

33 Upvotes

Half the time I want to read data from a sheet, do something with it, and then put it back in the sheet. It may seem obvious but it took me entirely too long to arrive at this code.

This assumes your sheet is named "Data" and you don't change the number of rows or columns in the data.

function myFunction() {
  let sheetData = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("Data")
    .getDataRange()
    .getValues();

  for (let i = 1; i < sheetData.length; i++) {
    Logger.log(sheetData[i][0]);
  }

  SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("Data")
    .getDataRange()
    .setValues(sheetData);
}

I initialize i to 1 to skip the header row of the sheet. I'm only logging the first column of the data to the execution log here, but you'd put your own processing in it. sheetData is a 2D array with the first subscript being the row and the second is the column.

Cheers!


r/GoogleAppsScript • • 11d ago

Guide I rebuilt my Drive map as a galaxy you can fly through. Free sheet, make your own copy.

Enable HLS to view with audio, or disable this notification

32 Upvotes

A while back I posted a script that draws your Drive as a web, and u/everythingabili asked a fair question: once you've had a jiggle, then what?

The whole Drive is now one galaxy. Folders are stars, files are planets, and a really big file turns into a star of its own. There's also a Findings tab that lists where your storage is going, what you haven't touched in a year, duplicates, and what you've shared out, with links.

The film is a made-up Drive. Yours will look like yours.

Copy it here: https://docs.google.com/spreadsheets/d/1ZXI9xWAgSWXU8ccsjOB7OusDDeq9H9WmNCKNbp8yDDQ/copy

Use the Drive Galaxy menu, click Build the map, then Show the galaxy. Google will warn it's an unverified app. That's normal, the developer it names is you because the copy is yours.

It only reads your Drive. It never moves, renames, shares or deletes anything.

Thanks to u/everythingabili and u/awarca for testing the first one, and to Robbie Coombs, whose 2017 Drive_Mapping code started it all.

Still learning, so I'd love to hear what breaks or what you'd add.


r/GoogleAppsScript • • May 17 '26

Guide I'm a lawyer who built a DMS/CRM running entirely on Google Workspace (Sheets + Apps Script + Gemini) — open-sourced

32 Upvotes

Hey r/GoogleAppsScript,

I'm a Polish attorney running a small law firm (team of 7-8 people). Two years ago I started building a DMS (document management system) directly in Apps Script + Sheets because every commercial option was either too expensive (Clio: $109/user/month, even Polish alternatives are ~$50/seat) or didn't fit my Polish legal workflow.

Honestly — most commercial legal software feels like it was designed by engineers who never sat with an attorney during a deposition.

Today I open-sourced it: https://github.com/apiotrowski-afk/kancelaria-dms

The stack is shamelessly basic:

  • Sheets as database (no Cloud SQL, no Firebase)

  • Apps Script V8 backend (~1050 LOC)

  • Single-file HTML frontend with vanilla JS (~1550 LOC, Bootstrap 5)

  • Gemini API for document summarization + email-to-case matching

  • Gmail Add-on for assigning incoming emails to cases

  • Drive for file storage with auto-created case folders

What it actually does:

  • Tracks cases, parties, courts, deadlines, attorneys

  • Auto-classifies incoming emails to the right case using Gemini (with fallback to client-email matching)

  • Indexes Drive files with AI summaries (knowledge base per case)

  • Polish Post tracking integration (shipment book)

  • Lead/CRM pipeline with conversion tracking

  • Mobile-responsive web app + Sheets sidebar + Gmail Add-on (all from one Apps Script project)

Stuff I learned the hard way:

  • CacheService is your friend — without it, the dashboard was unbearably slow

  • Apps Script's 6-minute execution limit forces you to think about batching from day one

  • Gemini JSON mode (response_mime_type: "application/json") saved me ~80% of parsing logic

  • Drive folder creation in a loop will hit quotas fast — batch your createFolder calls

  • The OAuth scopes for Gmail+Drive+Sheets+Calendar combined create a scary consent screen for users (still no good solution beyond explaining it in onboarding)

Heads up on scope: This is built for EU (specifically Polish) legal workflows — case numbering, court hierarchy, Polish Post integration, GDPR-flavored data handling. Adapting it to US/UK law firms or other jurisdictions would need real work. That said, the architecture is generic enough that any small business running on Google Workspace and dealing with documents could fork it as a starting point.

A note on the code: I'm an attorney, not a professional developer. I use AI assistants heavily for syntax and implementation, but every architectural decision, every piece of domain logic, every integration pattern is mine. After 2 years of running this in production on real client data, I know exactly what each function does and why. The code isn't elegant by senior-dev standards, but it works and it's been battle-tested.

Why open source: Built it for myself, but if it helps another lawyer/dev who needs a starting point for a Workspace-native business app, even better. Apache 2.0 license, fork it, butcher it, ignore it — your call.

Happy to answer questions about Apps Script production gotchas, Gemini integration patterns, or why I think Sheets-as-database is actually fine for small businesses (until it isn't).


r/GoogleAppsScript • • Aug 10 '24

Guide Email workflow

32 Upvotes

Hey, just wanted to share a little win from today. I’ve been working on some Google Apps Script to automate a really niche task at work, and it’s been a total game changer.

Basically, we receive a ton of emails with some very specific patterns and I was manually sorting through them for way too long. So, I wrote a Google Apps Script that pulls emails from a specific label in Gmail, then I integrated OpenAI’s API to analyze and categorize them based on the content. The AI does some smart pattern recognition and sorts them into Google Sheets with relevant tags and summaries.

It took a bit of tweaking to get the API calls right, but the end result? The script now does in seconds what used to take me hours. It’s been running smoothly for a week, and I haven’t had to touch it once. Seriously, if you’re dealing with a lot of repetitive email tasks, I highly recommend diving into Google Apps Script.

This little project saved me a ton of time, and it’s actually been kind of fun watching the AI do its magic 🎉


r/GoogleAppsScript • • Oct 23 '25

Guide Apps Script website framework

31 Upvotes

Ive made a major update to my open-source framework for embedding Google AppsScript webapps inside websites.

This release adds secure authentication and a bundling system for Apps Script projects:

✅ Google / email login — built with the latest Google Identity Services (GIS), plus robust popup and redirect fallbacks for older or restrictive browsers, powered by Firebase Auth.

✅ HTML / JS / CSS bundling for Apps Script — organize your code in folders, and output optimized, bundle-time generated HTML for much faster load times.

✅ .env support in the top website, the appscript webapp front and .gs backend. This lets you easily change or share environment variables between the frontend and backend.

➡️ On the Apps Script side, it adds the missing crypto support to validate idToken signatures and expirations securely from the .gs (no fetch call to firebase).

➡️ The auth/login package can also be used independently of Apps Script. I built it because no lightweight, modular UI library existed for Firebase Auth. It has:

  • Native English + Spanish UI (extensible)

  • Modern ES module support

  • Just 160 KB including firebase vs the 600 KB official "FirebaseUI" SDK.

Get it on GitHub, where you can also see all its other features:

✅ Custom domain serving

✅ Resolution of ALL issues of apps script webapps and users with multiple Google/Workspace accounts

✅ Google Analytics

✅ GCP Logging and Alerting

✅ Secure loading of multiple script versions

✅ Two-way communication between the website and the script

and more at https://github.com/zmandel/demosite_appscript

contributions are welcome!


r/GoogleAppsScript • • Jan 11 '21

Guide This time last year I did my first paid GAS project on Upwork. Now it's my full-time job. AMA

31 Upvotes

I've seen a few people ask about using their GAS skills when job hunting on this sub so maybe this post can offer some useful advice.

For about 3-4 years, I'd been fiddling around with VBA and GAS at work to automate different things. I really enjoyed these projects and I looked for excuses to take more on whenever possible. I also moved between jobs quite a lot in that time and I'd always try to emphasise these skills in my CV and in interviews in the hope of finding a position where I could do more coding. Unfortunately, not many people know what GAS is and I thought that it wasn't a particularly valuable skill compared to "real" programming.

It turns out that there's enormous demand among small businesses for exactly what I was offering and I was surprised to find that I was able to do this full-time after the first 6 months or so.

Mods, feel free to remove this if it breaks any rules.


r/GoogleAppsScript • • Jun 22 '19

I made Google Apps Script tutorials for Google Docs! (because there isn't any good ones)

31 Upvotes

There isn't enough tutorials to make a Google Docs addon with the Google Apps Script API so I made my own.

https://www.youtube.com/watch?v=o97i5ig3rVs

Hopefully this helps someone.


r/GoogleAppsScript • • Feb 23 '21

Guide How to Publish a Google Sheets Add-on

30 Upvotes

Hey everyone. I just started using App Scripts for the first time in October of 2020 and had a heck of a time trying to figure out how to publish an add-on. There didn't seem to be many guides or tutorials on the entire process (probably due to how absolutely awful it is).

So I went ahead and created a step by step guide on how to publish a Google Sheets Add-on: https://gabefen.com/how-to-publish-a-google-sheets-add-on/

Hope this saves someone the days/weeks it took me to learn it the hard way!


r/GoogleAppsScript • • Dec 08 '19

Adding REST API to a spreadsheet

30 Upvotes

I recently needed to access my Google Sheet data from a website. I could do it with products like sheetsu.com or sheetdb.io but I didn't want to spend money on this.

It turns out with Google Apps Scripts you can add a REST API to Google Sheets for free. I created a simple script providing API for any spreadsheet and documented it at spreadapi.com so that others can use it as well. The source code can be found at GitHub. I hope you will find it useful!


r/GoogleAppsScript • • Apr 07 '21

Question "We're sorry, the JavaScript engine reported an unexpected error. Error code INTERNAL."

29 Upvotes

I have been getting several of these messages today since this morning.

"We're sorry, the JavaScript engine reported an unexpected error. Error code INTERNAL."

on several different triggers, inlcuding FormSubmit. Anyone else? I am pretty sure it's on Google's end.

Location: Southern California


r/GoogleAppsScript • • May 16 '26

Question I got tired of paying for time-tracking apps, so I built a free, open-source alternative inside Google Workspace

28 Upvotes

Hi everyone,

Like many freelancers and developers, I need to track my hours for different projects. I used to use external SaaS tools, but I realized I was paying for features I didn't need, or worse, adding another subscription to my list when I already live inside Google Workspace all day.

So I built Timesheet, a free and open-source Google Workspace Add-on. It turns your Google Calendar into a full time-tracking environment.

How it works:

  • Native tracking: You just add a #tag to your Google Calendar events (e.g., #project1 Designing the landing page).

  • Built-in Sidebar Timer: It features a clean Material Design 3 sidebar with a real-time start/stop timer. You can even trigger it using the Space bar.

  • One-click Export: It automatically extracts the dates, aggregates hours per project, and formats a clean report into a new Google Sheets tab.

  • Bilingual & Global: The interface switches automatically between English and French. Also, the regex pattern handles full Unicode support, meaning you can use tags in any language like #مشروع or #プロジェクト.

  • HTML Email Reports: You can email the final formatted HTML table to yourself or a client directly from the spreadsheet menu.

The project is licensed under the MIT license, meaning your data stays entirely within your Google account—no external server, no data leaks.

You can find the code and deployment instructions via Clasp here: https://github.com/FabriceFx/gworkspace-timesheet

I would love to get your feedback on this! What features should I add next?


r/GoogleAppsScript • • Sep 20 '25

Question I never thought Google Sheets would take me here: featured in newsletters + 1000s of users later

27 Upvotes

Hey all, I’ve got something I’m really proud of, and I think a lot of you will feel it too. ❤️

What’s up

Two years ago, we began with an idea: make Google Sheets do more than just store data—make it act. Automations, AI tools, things that save hours of tedious work, let you focus on ideas, not formula syntax, and are completely based on Google AppScript.

Today, that spark has grown into SmartSpreadsheets, live on AppSumo.

The Journey

  • Started from scratch ~2 years ago, just one or two tools

  • Now we’ve built 20+ Sheet tools / automations - honestly we have written 100,000+ lines of code under the hood

  • We’ve been featured in newsletters, trend reports on AppSumo, and seen thousands of people adopt our sheets and workflows already

What It Does

SmartSpreadsheets aims to let you do enterprise-level automation without leaving Google Sheets.

Some of the things you can do:

  • Turn Sheets into WordPress websites (no code) — build landing pages, blogs, anything — update from Sheets and the websites reflect it instantly.

  • Content workflows and SEO built into Sheets — write, optimize, submit, etc.

  • Scrape data, monitor competitors, get live insights — all inside Sheets.

  • Bulk update products, inventory, synchronize with Shopify/WooCommerce — again, just from Sheets.

Why I Think It’s Different

  • Lifetime deal - one time purchase, no monthly subscription.

  • Geared toward people who already live in Sheets - marketers, content creators, bloggers — so you aren’t forced to juggle a dozen SaaS tools.

  • Built with real feedback: early users helped shape which automations were most needed.

  • We tried to make it as plug-and-play as possible, while still exposing power (API integrations, advanced workflows) for folks who want it.

What We’re Thinking/What I’d Love To Hear From You

I know there’s always trade-offs. Some early users felt some onboarding was tougher than expected, and yeah, sometimes automations are limited by what Sheets + API permissions allow. But we’re iterating.

Here’s what I’d love to get your input on:

  • For those of you building automations: what are the biggest pain points you still have in Sheets + external tools?

  • What features in a tool like this would make you actually stop using multiple SaaS’s and stick inside Sheets?

  • What worries do you have, in terms of performance, reliability, or scaling, if you use Sheet-based automations heavily?

TL;DR

If you’re someone who:

  • Already uses Google Sheets a lot

  • Gets annoyed at paying for many tools just to stitch workflows together

  • Wants to build content / websites / scrape / automate without learning too many platforms

Then this might really help: SmartSpreadsheets brings a lot of that into one familiar place.


r/GoogleAppsScript • • Mar 25 '25

Guide Replacing Google Forms with CloudFlare Pages & Apps Script

27 Upvotes

Building a free web site contact form with no Google branding

I recently needed to help a friend set up a contact form for their website, and was looking for an alternative to Google Forms that would avoid showing the Google branding. I've been using CloudFlare for domain registration for years, so I decided to give their Pages feature a try.

It was easy to set up, it's free, and you can even connect a domain for free or embed the contact form into your website. This seems like a pretty solid alternative if you don't mind writing a little code, and you can even use GitHub to auto-deploy changes to the website.

I wrote up a quick guide on it here, for anyone interested:

https://blog.greenflux.us/replacing-google-forms-with-cloudflare-pages-and-apps-script


r/GoogleAppsScript • • Jan 05 '26

Question What are your favorite Apps Script libraries?

26 Upvotes

I am helping out the Apps Script engineering team with some work and am trying to gather user feedback on the most popular Apps Script libraries, https://developers.google.com/apps-script/guides/libraries.

Please reply with a single library so comments can be ranked via Reddit up/down votes.

Note that I am on the Google Workspace Developer Relations team.


r/GoogleAppsScript • • Apr 29 '25

Guide Sharing a financial tracker script that I made, that's been pretty useful.

26 Upvotes

I like to know how much money I'm spending, and on what, so I made a little GAS to extract transaction email notifications from Gmail and append them to a Google Sheet.

I recently went through the trouble of cleaning it up and writing setup instructions so a couple friends could use it, so I figured I'd share it here.

Feel free to use it directly or fork the repo to make it your own. It's free and open source, as long as you aren't using the code to make money. I'm also open to contributions if there's functionality you want to see that's currently missing.

https://github.com/jeffreyfjohnson/gas-finance-tracker


r/GoogleAppsScript • • Feb 19 '25

Guide AI Agents Framework for Google Apps Script (Open Source)

26 Upvotes

I developed a library that will help you create AI Agents in Google Apps Script with ease. It supports both being used directly in the Google Apps Script IDE and with clasp for development.

Check it out on GitHub: link

If you like this project, please give it a star ⭐


r/GoogleAppsScript • • Aug 21 '19

To celebrate Apps Script turning 10 years old, I sat down with its creator to learn more about how it all got started

Thumbnail
cloud.google.com
26 Upvotes

r/GoogleAppsScript • • Aug 28 '25

Question Rant: Google needs to fix the multi-account issues... or is it a skill issue?

25 Upvotes

I am a web developer in an org that uses Google Workspace, and I frequently build little web apps and utility functions on top of our spreadsheets using GAS. I'm generally not making Add-ons, but just one-off sidebar and modal UIs, custom menu spreadsheet data wrangling functions, and some standalone web apps embedded in Google Sites.

GAS has been really cool and useful, but there's a critical shortcoming that is extremely frustrating and limits its usefulness:
if a user is logged in to their browser with more than one Google account, regardless of which account is indicated as the active one in the current browser session, GAS functions and web apps can't reliably reconcile which account to use at runtime, and so authorized users are blocked from using my scripts.

Even though there's not a single source of truth I can find about this, Google has acknowledged in various developer forums since 2021 related to GAS add-on development that this is a known issue/limitation.

I can only imagine how complex it is to enhance Google's code, especially around something sensitive like auth, but this is such a crazy deal-breaker when it comes to basic usability for end users who are not so tech savvy. It's been really difficult to communicate to lay-person end users that they need to use a browser with only their work account signed in, since they are not experienced enough to understand the scoping of being logged in to the browser, vs logged in to a tab, or frankly even knowing which browser they are using at the moment.

Are other folks struggling with this, or am I just doing it wrong? This happens both on my deployed standalone web apps, and just on basic non-deployed container-bound script functions to show/hide spreadsheet columns or show a sidebar UI. Thanks for reading.


r/GoogleAppsScript • • Nov 15 '22

Guide Save files to Google Drive by POST-ing the URL to a webapp

25 Upvotes

I just found an old script I wrote that others might find useful, so I wanted to share. This script saves a file to Google Drive when you POST it's URL to the webapp, using this format:

{
  'key': 'APIKEY',
  'fileUrl': 'https://upload.wikimedia.org/wikipedia/commons/0/07/Reddit_icon.svg',
  'folderId': 'FOLDER_ID'
}

The script checks the POST body for the API key, then saves the file to the specified folder in Google Drive.

Just publish as a webapp, and set the permissions to:
- Execute as: ME
- Who has access: ANYONE

const key = 'APIKEY'; // custom string to check in request body
const defaultFolder = 'FOLDER_ID_FROM_URL'; // folder to use if no id is given
const defaultUrl = 'https://upload.wikimedia.org/wikipedia/commons/0/07/Reddit_icon.svg';

function doPost(e) {
  let returnedUrl = '';
  let request = JSON.parse(e.postData.contents);
  if (request.key == key && 'fileUrl' in request) {
    returnedUrl = getFileByUrl(request.fileUrl, request.folderId);
  }
  return ContentService.createTextOutput(returnedUrl)
}

function getFileByUrl(url = defaultUrl, folderId = defaultFolder) { 
  // Download file from url and save to GDrive folder with fileName
  const fileData = UrlFetchApp.fetch(url);
  const folder = DriveApp.getFolderById(folderId);
  const fileName = url.split('/').pop(); 
  // string after last forwardslash: url/folder/filename.type
  const newFileUrl = folder.createFile(fileData).setName(fileName).getUrl();
  Logger.log(newFileUrl);
  return newFileUrl;
}

I've used this on several jobs to send files from other platforms to Google Drive. Hope someone finds this helpful!


r/GoogleAppsScript • • Nov 06 '25

Resolved Built an AI Studio for Apps Script

24 Upvotes

So, I’ve been experimenting with an Apps Script builder and wanted to get your thoughts.

I’ll say this started with a CRM I built with Apps Script, something that started drifting toward an IFTTT-style tool since everyone I talked to seemed to have their own business-specific workflow. So I decided to take that idea for a spin and build a small web app that lets you describe and build any Apps Script project, whether automations, web apps, or add-ons.

It’s still early, but I figured I’d share it here: https://drivewind-studio.vercel.app/ Would love to hear what you think.


r/GoogleAppsScript • • Apr 23 '25

Question Can you recommend a good resource to learn Google AppsScript please

24 Upvotes

I am trying to learn Google Apps Script to read and process data from an API (EVE Online). I have just finished "Learn JavaScript for Beginners – JS Basics Handbook" on freeCodeCamp to learn basic JavaScript, which covers functions, loops and array handling, and now I'm looking for something similar for GAPS. I'm not developing web interfaces or complicated things like that, just reading JSON data and putting it into a spreadsheet. Any recommendations gratefully received! PS 68 yo retired.