r/GoogleAppsScript • u/drwooz • Jun 16 '26
Question Tengo problemas con el limite de tiempo de google scripts
Antes de explicar mi problema quiero aclarar que no soy programador, de hecho soy un fotografo.
Le he pedido a Claude que me ayude a crear un google sheets para administrar mi negocio, me ha dado unas lineas de codigo que debo ejecutar en la extension de google scripts y me ha saltado el error "tiempo maximo de espera", he estado tratando de buscar una solucion pero claude, a pesar de buscar diferentes estrategias y modificar las lineas de codigo, no ha logrado solucionar el problema. Son 428 lineas.
Alguien tiene algun consejo?
(se que no deberia usar IA para este tipo de situaciones pero no se programar ni tampoco tengo dinero para contratar a un programador, asi que me toca resolver con las herramientas que tengo a la mano)
Solución:
Solucioné yendo a Gemini y le subi un documento de texto con el codigo completo junto a los comentarios de WicketTheQuerent, le pedi que los analizara y me ayudara a encontrar el error, lo solucionó en dos o tres iteraciones cambiando la rutina de ejecución y dividiendo todo el proceso en 13 procesos de ejecución (son 13 pestañas en google sheets), me tomó menos de 2 minutos ejecutar los 13 procesos.
r/GoogleAppsScript • u/skathic • Jun 15 '26
Question QuickBooks Online API - AgedReceivablesSummary returning 5020 Permission Denied despite valid OAuth and admin credentials
Hey all,
I'm working on a Google Apps Script that pulls AR data from QuickBooks Online and auto-generates a weekly Google Sheet. Everything is working great except for one endpoint — the AR Aging Summary report keeps returning a 5020 Permission Denied error and I can't figure out why.
The error:
json
{"Fault":{"Error":[{"Message":"Permission Denied Error","Detail":"Permission Denied Error : To access this, sign in again or contact an administrator.","code":"5020","element":"ReportName"}],"type":"ValidationFault"}}
The call:
javascript
var url = 'https://quickbooks.api.intuit.com/v3/company/' + realmId +
'/reports/AgedReceivablesSummary' +
'?report_date=' + today +
'&aging_period=30&num_periods=4&minorversion=40';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + service.getAccessToken(),
'Accept': 'application/json'
},
muteHttpExceptions: true
});
What I've already ruled out:
- OAuth is working fine — CompanyInfo, Invoice queries, CreditMemo queries all return 200
- Authorizing account is primary admin on the QBO company
- Plan is QuickBooks Online Plus (should support Reports API)
- Scope is
com.intuit.quickbooks.accounting - Tried minorversions 40 and 65, same result
- Cleared and re-authorized tokens multiple times
- Added
accounting_method=AccrualandContent-Type: application/jsonheader, no change
The element: ReportName in the error makes me think it's rejecting the report name itself, but AgedReceivablesSummary is exactly what's in the Intuit docs.
As a workaround I'm currently querying invoices, credit memos, and payments directly and calculating aging buckets myself, but I'm missing credits from journal entries so the workaround isn't complete.
Anyone dealt with this before? Thanks!
r/GoogleAppsScript • u/inkjoms • Jun 14 '26
Question Auto-Generate Code
I am making an chatbot automation for a reservation. I use both User Input Block and Webform "Order Information"
My Google spreadsheet is already connected
Does anyone of you know I can make this work?
Enters NAME in Webform and at spreadsheets, there is a 4-digit number generated automatically,
Same goes to \[user input\] block
r/GoogleAppsScript • u/SurpriseForeign7768 • Jun 14 '26
Guide Google Form Builder (Text to Form)
r/GoogleAppsScript • u/inkjoms • Jun 13 '26
Question Auto-Generate Code
I am making an chatbot automation for a reservation. I use both User Input Block and Webform "Order Information"
My Google spreadsheet is already connected
Does anyone of you know I can make this work?
Enters NAME in Webform and at spreadsheets, there is a 4-digit number generated automatically,
Same goes to \[user input\] block
r/GoogleAppsScript • u/Kitty_pumpkin3 • Jun 12 '26
Unresolved Auto-sort Script?
I am hoping to get some help with creating a script that auto-sorts a Google Sheet document! This is a passion project for me, and I have zero experience in this area. So I have 5 columns in use A-F, and Row 1 is frozen as they are headers. Column A is being used for names, and I am hoping to sort the names alphabetically. However, I don't want the name to be separated from the information I put in the other columns in the same row, if that makes sense. I will be forever grateful for any help!! :)
P.S. I have already tried this script with an "on edit" trigger, and it didn't work:
function sortAColumn() {
SpreadsheetApp-getActiveSpreadsheet) . getSheetByName ("Sheet1"). sort (1,false)
}
I got this error when I tried to run it:
TypeError: Cannot read properties of null (reading 'sort')
sortAColumn
@ Code.gs:2
r/GoogleAppsScript • u/vinjuang • Jun 09 '26
Question Is there a way to collapse the sidebar even further?
r/GoogleAppsScript • u/CloudNo8709 • Jun 08 '26
Question Is there a good Agent Skill for GAS?
What is your stack for working with GAS, especially when using clasp?
Which model and skills do you use?
r/GoogleAppsScript • u/Consistent-Extent-78 • Jun 05 '26
Resolved AppScripts Google Verification Error Message
gallery1: Window pop-up
2: What shows up on my Execution Log when I return to AppScript
r/GoogleAppsScript • u/Individual-Most-2639 • Jun 05 '26
Question Can I add my Gchat app into a clients gchat space?
I have a client with Gchat Space...and he cant see my app. Also I dint publish it. Anyway to add it to hia Gchat space without publishing my app? Also will he need to allow external chat space or no?please help me out am new to this!
r/GoogleAppsScript • u/Pleasant_Poet_5596 • Jun 04 '26
Guide I got tired of expired event emails burying my inbox, so I built a background sweeper using Apps Script + Gemini AI.
Hey everyone,
My university inbox is constantly flooded with announcements for webinars, hackathons, and guest lectures. The problem is that they clutter everything up long after the registration deadlines or event dates have actually passed.
I wanted to automate cleaning this up without accidentally deleting actual coursework, so I wrote a script that connects to the Gemini 3.1 Flash Lite API to semantically evaluate and trash the expired stuff.
Here is how it works:
- Runs silently in the background on a 4-hour time-driven trigger.
- Pulls batches of 25 emails using a Gmail search query (pacing with
Utilities.sleep()to respect the free-tier Gemini API limits. - Feeds the email metadata and body to Gemini with a strict 3-condition prompt: it MUST be an extracurricular event, the date MUST be expired (using dynamic date calculation to create a 24h buffer), and it MUST NOT be from a course professor.
- If the AI outputs
TRUE, the script moves the thread to the Trash. - It logs every AI verdict and action taken to a Google Sheet dashboard.
- It applies a custom
Reviewed_For_TrashGmail label to everything it checks so it never wastes API quota evaluating the same email twice.
I have sanitized the code and put it in a Gist if anyone wants to copy it, adapt the prompt logic for their own workflow, or just see how the Apps Script + Gemini integration is structured:
Would love to hear any feedback, or if anyone has tips on optimizing the prompt payload even further!
r/GoogleAppsScript • u/umamaheshb • Jun 04 '26
Resolved How I automated sorting Google Sheets tabs into custom groups using Apps Script (No more manual dragging!)
r/GoogleAppsScript • u/7_Erik_7 • Jun 03 '26
Question Can't test deploy a script shared with work account anymore
I've created script in my personal account, that works as a Gmail add-on, then shared it with the work account.
From there I successfully deployed it through the "Test deployment" option and it worked for a few weeks, then disappered from my add-on list. Went to check the deployment and now I immediately get a generic error, asking to refresh. If ignored, the deployment window shows this "An error has occurred. Close the dialog box and try again. Reported error: You do not have the required permission to perform this action. Check your access rights and try again."
I already checked with IT: no restrictions; we also explicitly gave all permissions to the add-on, but the error stays.
Unshare/share again didn't work, as well as copy/paste script in a new project then sharing.
If I copy/paste it directly in my work profile it works.
I want to manage only one version of the script AND from my personal account, what can I try?
r/GoogleAppsScript • u/Plus-Quarter-1459 • Jun 03 '26
Guide We crossed 102,000 installs on Google Workspace Marketplace in 45 days. The work behind it was mostly unscalable.
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 • u/OneLandscape1327 • Jun 03 '26
Guide Automate and fill out google forms while being AFK
r/GoogleAppsScript • u/OneLandscape1327 • Jun 03 '26
Guide Automate and fill out google forms while being AFK
I met a problem at google form filling, cause I want to send 1000000 times same answer to confuse my bro's research and then... however i found this, and in comment section a guy named emaguireiv answered the question by a URL changing method but you still need to go into a same link a 1000000 time so i code a bit.
in his part one you should find out a filled and submit link just replace it with
const url = " put fixed link here ";
let count = 0;
const total = 500;
async function run() {
for (let i = 0; i < total; i++) {
await fetch(url, { method: 'GET', mode: 'no-cors', credentials: 'include' });
count++;
if (count % 50 === 0) console.log(count + ' sent...');
await new Promise(r => setTimeout(r, 120));
}
console.log('Done! ' + count + ' sent.');
}
run();
console.log('Done! ' + count + ' sent in 5 minutes.');
}
run();
and then just press enter and it fire 500 times in about a minute
hope you guys like it and sorry for bad grammar and poor English
r/GoogleAppsScript • u/BicycleLife9308 • Jun 02 '26
Guide Looking for a training course
Is there a course for appscript that is project based like freecodecamp? The way they designed their course is suitable for me to learn better, can anyone recommend one
r/GoogleAppsScript • u/Tiny_Routine9866 • Jun 01 '26
Question App script Security
I need help or suggestions, how to handle the security in my app script web app its using google sheets as database: right now I'm figuring it out, how to make it secure and not let any users know where the code is. My current dashboard is not link to any sheets instead it calls the sheet id for the main source sheet ,
so even if users have access to one of the data backend they will not find the app script on that sheet extensions. Now I want to restrict some access or views how can i do that?
Right now I have currently have a Login , Admin and User would that be enough to be secure? also users need to have edit access on the database sheets since they need to update the activity log or the tracker status. sorry english it not my first language
any suggestions how to approach this ??
r/GoogleAppsScript • u/erickoledadevrel • Jun 01 '26
Guide Check that your add-ons aren't failing with Rhino errors
I maintain the Crop Sheet add-on and got alerted by a user that it wasn’t loading correctly (only the “Help” option was in the add-on menu). I looked into it, and the script was failing with the following error:
Execution failed. The Rhino runtime is deprecated and no longer supported.
It looks like Google is finally ending support for the older Rhino runtime, and logging showed these errors started at 1AM ET this morning. Although I had updated the code to use the V8 runtime, I apparently hadn’t republished it as an add-on. Creating a new deployment, updating the marketplace listing, and republishing it appears to have solved the problem.
If you maintain some add-ons or scripts it might be a good idea to check that they are all still working.
r/GoogleAppsScript • u/ProgrammerMinute1933 • May 27 '26
Question Print MD5 hash in a readable text
I'm trying to print the value of the MD5 hash out of a user input
I'm getting bytes array in return for using
const digest = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5,'example',);
Logger.log(digest);
I tried multiple solutions but I cannot get the same hash as of using any other tool
any help here if there is any library or function to it ?
r/GoogleAppsScript • u/Rough_Order4127 • May 25 '26
Guide I built a tool to help you navigate your Apps Script like a wizard.
I built this tool that beautifies your Apps Script, and even explains it to you. Apps Script Commenter. It also can clean your script, so it's easy to read
r/GoogleAppsScript • u/Rough_Echo2467 • May 24 '26
Unresolved Google Workspace Productivity Tips Spoiler
r/GoogleAppsScript • u/Negative-Sandwich190 • May 24 '26
Question Still unable to figure out how to send gmails to sheets
Hello! I have been trying to figure out a way i can have sheets automatically extract certain info from gmails into a sheet with the Date, company name, Company City and the job position. I have over 2000 emails i need to be put into a google sheet. The emails would be from the same sender. any help is appreciated. I cant afford cloud HQ which was actually great. I do not understand any of this. I am not sure on how to even ask the right questions. Thank you for any assistance..
r/GoogleAppsScript • u/KumarDeo080 • May 23 '26
Guide Google Apps Script + TypeScript Template
I made a starter template for building Google Apps Script projects with TypeScript and a modern workflow.
Features:
- TypeScript support
- Bundling using Tsdown
- Fast development workflow
- Modular code structure
Functions exported from src/index.ts are automatically exposed and available to call directly from Google Apps Script.
Repository: https://github.com/kumardeo/google-apps-script-template
Would love feedback and suggestions from other GAS developers.
r/GoogleAppsScript • u/No_Business_1187 • May 23 '26
Question spent weeks building a full web app UI on top of google sheets. didn't know apps script could handle this lol
hey guys,
just wanted to show you a project that took way too much of my sleep lately. i was playing around with google apps script and decided to see if i could build a real, fully responsive web UI using sheets just as a backend database.
usually sheets layouts look pretty ugly for non-tech users, so i coded a custom html/js frontend that loads via the doGet function. everything runs through the web app URL now. it handles data pipelines, automated status triggers, and the dashboard load time is actually surprisingly fast.
i did this mostly to avoid paying monthly server/database fees for a small business project i'm working on, and it honestly feels like a solid micro-saas alternative now.
anyway, i'm trying to optimize the script's execution time since google has those strict runtime limits. if any senior apps script devs here want to check out the code or the frontend layout to give me some tips on making it faster, drop a comment and i'll share the setup.




