The automated shortcut in Google Sheets is the macro — a recorded sequence of menu actions, clicks, and keystrokes that replays on a single keyboard shortcut, typically Ctrl+Alt+Shift+number on Windows or Cmd+Option+Shift+number on a Mac. Macros are the shortcut layer most Sheets users actually encounter, because the recorder sits under Extensions and writes a bound Apps Script function for you. The distinction that matters for daily productivity is scope: a macro replays what you clicked, an Apps Script function can branch, loop, and read other files, and a formula shortcut only recalculates a cell.

How Google Sheets Records a Macro and What It Actually Stores

Recording is deliberately unglamorous. Open Extensions, then Macros, then Record Macro. Sheets captures absolute cell references by default, so every click becomes a hard-coded range. A settings dialog at the top of the screen lets you switch to relative references, which is the only toggle that determines whether the macro works on a different row tomorrow. When you press Save, Sheets asks for a name and a shortcut assignment.

Under the hood, the recorder generates a function inside the spreadsheet's bound script project, using the SpreadsheetApp service. That matters because the recorded output is editable JavaScript, not a compiled binary. You can open Extensions, then Apps Script, and rewrite the generated lines. The recorder writes verbose calls like getRange and setValue rather than optimized batch operations, which is why recorded macros slow down noticeably past a few hundred rows.

Shortcuts are assigned from a numbered list. Sheets offers Ctrl+Alt+Shift+0 through 9, and macOS maps the same ten slots to Cmd+Option+Shift plus a digit. Ten slots is the hard ceiling per spreadsheet. If you need an eleventh automation, it lives in a custom menu or runs from the Apps Script editor, not a keystroke.

The authorization prompt is where most first attempts stall. The first run of any macro triggers a permissions screen asking for access to your spreadsheets, and on managed Workspace accounts an administrator may block the Apps Script API entirely. Confirm with your IT administrator whether the Apps Script API is enabled for your organizational unit before you promise a team a shortcut they cannot authorize.

Macro vs. Apps Script vs. Formula Shortcut: A Comparison on the Same Five Dimensions

These three get lumped together as "automation" and then disappoint people for different reasons. Here is the side-by-side that the help documentation rarely builds in one place.

Dimension Recorded macro Hand-written Apps Script Formula-based shortcut
Trigger Keyboard shortcut (Ctrl+Alt+Shift+digit) or menu Time-driven, onEdit, onOpen, web app, or menu Recalculation on edit
Skill required None beyond clicking JavaScript familiarity Function knowledge
Shortcut slots 10 per spreadsheet Unlimited via menus Not applicable
Cross-file action No — bound to one spreadsheet Yes, with Drive and Sheets services No
Failure mode Silent no-op when the auth token expires Execution timeout at 6 minutes #REF! after row deletion

Pick the recorded macro when the task is a fixed sequence on a fixed range and you want it running today. Pick Apps Script when the task needs a condition — "if the status column says Paid, move the row" — because the recorder cannot express branching. Skip both when a single ARRAYFORMULA or QUERY function solves it, since formulas recalculate automatically and need no authorization at all.

The verdict rule is simple: if you would have to explain "only do this when…" to a colleague, the recorder will fail you. Conditions belong in script.

The Real Productivity Ceiling: Where Macros Save Minutes and Where They Cost Them

A macro that formats a weekly report — bolding headers, setting column widths, applying a currency format — takes roughly 40 seconds to record and about one second to replay. Replayed across 50 weeks, that is under a minute of total execution against roughly 33 minutes of manual formatting, assuming 40 seconds per manual pass. That arithmetic is the strongest case for macros and it holds up.

The ceiling appears when the macro touches many cells one at a time. Google's Apps Script quotas, published in the Apps Script services documentation, cap a single script execution at 6 minutes for consumer accounts and 30 minutes for Workspace accounts. A recorded macro that writes values cell by cell through getRange().setValue() can burn that budget on a few thousand rows, because each call is a separate round trip to the spreadsheet service.

The fix is batching: read a whole range with getValues(), manipulate the array in memory, write it back with setValues(). This is the single largest performance difference between recorded and hand-written code, and the recorder never generates the batched version. If a recorded macro feels slow, the cause is almost always call-per-cell writing, not the Sheets engine itself.

Cost in attention matters too. Every macro needs re-authorization when its OAuth token is revoked, which happens after password changes on some account configurations and after long idle periods. A shortcut that silently does nothing is worse than no shortcut, because the user assumes the work happened.

How to Build Your First Daily-Productivity Macro in Six Steps

1: Open the spreadsheet and confirm you are signed into the account that owns it; macros run under the authorizing account, not the viewer's. 2: Go to Extensions, then Macros, then Record Macro. Choose absolute or relative references in the dialog before touching anything. 3: Perform the task exactly once, slowly, with no exploratory clicks — every click is recorded. 4: Press Save, name the macro descriptively, and assign one of the ten shortcut slots. 5: Run it once from Extensions, then Macros to trigger the authorization prompt and grant access. 6: Test on a copy of the sheet (File, Make a copy) with deliberately different data to expose hard-coded ranges.

That sixth step catches the most common failure. A macro recorded with absolute references will happily overwrite the same block of cells every time, even when the active row has moved. If your test copy produces correct output on a different row, the references are relative; if it clobbers row 2 again, they are absolute and you need to re-record or edit the script.

When a macro misbehaves, open Extensions, then Apps Script, find the generated function, and read the getRange call — the A1 notation in that string tells you exactly which cells the recorder locked in. Editing that string is faster than re-recording.

Five Failure Cases That Break Recorded Shortcuts

The authorization lapsed. The macro runs, nothing happens, and no error appears in the sheet. Check the Apps Script editor's execution log; a revoked token shows as an authorization error there.

The sheet was renamed. Recorded macros reference sheets by name through getSheetByName. Rename "Q3 Data" to "Q3 Data Final" and the macro throws a null reference. The script editor shows the exact line.

The row count changed. A macro that sorts a fixed A2:D500 range will silently exclude row 501. This is the edge case that bites monthly reports, where the data grows and the macro does not.

A protected range blocks the write. If the target cells are protected, or the running account lacks edit rights, the write fails with a permissions error visible only in the execution log, not on screen.

The 6-minute execution cap is hit. Large loops terminate mid-run and leave partial writes behind. There is no rollback, so the sheet ends up half-processed.

Each of these shares a trait: the failure is invisible in the spreadsheet UI. Build the habit of checking the Apps Script execution log after any macro that "didn't seem to do anything."

Beyond the Keyboard: Triggers, Custom Menus, and the OnEdit Pattern

Keyboard shortcuts cap at ten, but Apps Script triggers remove the cap entirely. A time-driven trigger runs a function hourly, daily, or on a date, configured from the Triggers page in the Apps Script editor. An installable onEdit trigger fires when a user changes a cell, and unlike the simple onEdit, it can call services requiring authorization.

The onEdit pattern is the workhorse for daily productivity. A single installable trigger can watch one column — say column F for "Status" — and stamp a completion date into column G when the value changes to "Done." That replaces an entire category of manual bookkeeping and needs no keystroke at all.

Custom menus are the discoverability fix. The onOpen function can add a menu item to the Sheets menu bar with addItem, which lets a team share twenty automations without memorizing twenty shortcuts. This is how you scale past the ten-slot limit without asking colleagues to open a script editor.

The tradeoff is latency. Time-driven triggers run on Google's schedule, which the documentation describes as approximate — an hourly trigger may fire at 47 minutes past, not on the hour. Never build a workflow that depends on second-level punctuality; use a spreadsheet formula for anything that must be current the moment someone looks at it.

Where Shortcuts Don't Apply: Docs, Drive, and the Scope Boundary

Macros exist in Google Sheets and in Google Docs, but they are separate systems with separate recorders and separate permission scopes. A Sheets macro will not run in Docs, and recording in Docs does not create a Sheets shortcut. Drive has no equivalent recorder at all; automation there means Apps Script with the Drive service or a Workspace add-on.

This boundary confuses teams that expect one automation layer across the suite. If your daily task spans a Sheet and a Doc — pull numbers, paste into a report — a Sheets macro only handles the first half. The second half needs a script that calls DocumentApp, and that script must be authorized for both scopes.

Mobile is the other hard boundary. The Google Sheets mobile apps do not expose the macro recorder or the shortcut assignments. A macro built on desktop is not invokable from the phone interface, so field teams relying on mobile cannot use recorded shortcuts as their primary tool. Confirm this on the current app before designing a workflow around it.

Given these limits, the practical architecture for a small team is: formulas for anything that should always be current, recorded macros for fixed formatting passes, Apps Script triggers for conditional or scheduled work, and custom menus for sharing.

A Worked Time Budget: What One Macro Is Worth per Month

Take a realistic daily task: appending a date stamp, applying a border, and setting a number format across a summary block. Manual execution runs about 25 seconds. The macro replays in roughly one second, and recording it once costs about two minutes including the authorization step.

Over a 21-working-day month, manual work totals 525 seconds, or 8.75 minutes. The macro totals 21 seconds plus the 120-second setup, or 2.35 minutes in the first month and 21 seconds in every month after. The saving is roughly 6.4 minutes in month one and about 8.4 minutes monthly thereafter — small per person, but multiplied across a ten-person team that is over 80 minutes a month recovered from one recorded shortcut.

The arithmetic changes character when the task is error-prone rather than slow. A macro that eliminates a copy-paste mistake costing 15 minutes of cleanup once a fortnight is worth more than its raw seconds suggest, because it removes variance, not just duration. That is the honest case for automating short tasks.

Set a threshold and stick to it. If a task recurs more than weekly and takes over 15 seconds, record it. If it recurs monthly and takes under 30 seconds, a checklist beats a macro, because the authorization and maintenance overhead eats the gain.

FAQ

Can I assign more than ten keyboard shortcuts to macros in one spreadsheet?

No — Sheets exposes ten slots, Ctrl+Alt+Shift+0 through 9, per spreadsheet file. Anything beyond that must run from the Extensions menu, a custom menu built with onOpen, or an automatic trigger. Teams needing many automations typically move to a custom menu rather than juggling files.

Do Google Sheets macros work on the mobile app?

They do not. The Sheets mobile apps omit both the recorder and the assigned shortcut keys, so a macro is desktop-only in practice. If your workflow depends on phone entry, plan for formulas or an installable trigger that fires on edit instead of a keystroke.

What is the difference between a macro and an Apps Script function?

A macro is a recording that replays fixed clicks, while an Apps Script function is code that can branch, loop, and touch other files. The recorder writes an Apps Script function for you, so every macro is script but not every script is a macro. Conditional logic is the dividing line.

Why does my macro run but change nothing?

The usual cause is a lapsed authorization or a renamed sheet the script can no longer find. Open the Apps Script editor and check the execution log, which records the actual error the sheet UI hides. Re-authorizing or correcting the sheet name in getSheetByName resolves most cases.

How long can a single macro run before Google stops it?

Apps Script caps one execution at 6 minutes for consumer accounts and 30 minutes for Workspace accounts, per Google's published quotas. Recorded macros that write cell by cell hit that ceiling on large ranges, so batch reads and writes with getValues and setValues when volume grows.

Can a macro copy data into a different spreadsheet?

Not as recorded — the recorder binds to the active file. Reaching another spreadsheet requires editing the generated script to open the target by its file ID through the SpreadsheetApp service, which also expands the authorization scope the user must approve.

Do macros survive when I copy a spreadsheet?

The bound script copies with the file when you use File, Make a copy, but the shortcut assignments and authorizations do not always carry cleanly. Expect to re-run the macro once in the copy to re-trigger the permission prompt before trusting it in production.

Is a macro faster than an ARRAYFORMULA for a recurring calculation?

Usually not. An ARRAYFORMULA recalculates automatically, needs no authorization, and cannot silently fail, whereas a macro must be invoked and can break on renamed ranges. Use macros for formatting and multi-step actions; use formulas for anything that should always reflect current data.