How to see who changed a cell in Google Sheets (and who deleted rows)
By Caner Kaya, Kayabyte
To see who changed a cell, right-click it and choose Show edit history. Google Sheets shows who made each edit, when, and the value before and after. For anything the cell history doesn’t cover, such as deleted rows, use version history, which shows the whole file as it was at an earlier time and lets you restore it.
Neither one is a full change log. Below is what each built-in tool shows, where they stop, and a free script that keeps a simple log of your own.
How do I see the edit history of one cell?
Google describes this in Find what’s changed in a file:
- Open the spreadsheet on a computer.
- Right-click the cell.
- Choose Show edit history.
The box shows the most recent edit: who made it, when, and the old and new value. Use the arrows in the box to step back through earlier edits of that cell.
Google lists changes that might not show up in a cell’s edit history:
- Added or deleted rows and columns.
- Changes to the cell’s format.
- Changes made by formulas.
- Changes made before someone restored a past version of the spreadsheet.
You also need edit access. Google says that if you don’t have permission to edit a file, you won’t be able to see its version history.
So if a row disappeared, the cells that were in it have no edit history to look at. That is where version history comes in.
How do I see deleted rows in Google Sheets?
Use version history (Google’s guide):
- Click Last edit at the top right (you can also use File > Version history > See version history).
- Pick a version in the right panel. Sheets shows the file as it was then, with the changes and who made them.
- By default, Sheets hides unmodified rows so the changes are easier to find.
- Some versions are grouped. Click Expand in the right panel to see the versions inside a group.
To find a deleted row, go back version by version until the row is there again. The version just after it is roughly when it was deleted, and the panel shows who edited the file in that version.
To get the row back, you have two choices:
- Restore the whole version. Choose the version, click Restore this version, then Restore. This brings back everything as it was, so any good changes made since then are undone too. Google also warns that restoring a spreadsheet clears the cell-by-cell edit history for changes made before the restore.
- Copy just the row. Open the version, click More and choose Make a copy. Then copy the row you need from the copy into your live sheet. This is usually the safer choice in a shared sheet.
Can I name versions so they don’t get lost?
Yes. Google says a named version keeps your versions from being merged, and that revisions may otherwise be merged occasionally. Open version history, choose a version, click More and choose Name this version. You can then turn on Only show named versions to find it again.
Google’s article says you can add up to 15 named versions per spreadsheet. Naming a version before a big clean-up or an import is a cheap insurance policy.
Can Google Sheets email me when someone changes something?
Yes, with notification rules (Google’s guide):
- Open the spreadsheet.
- Click Tools > Notification settings > Edit notifications.
- Under Notify you when, choose Any changes are made (or A user submits a form, if a form is linked).
- Under Notify you with, choose Email - right away or Email - daily digest.
- Click Save.
Limits worth knowing:
- You can only set notifications for yourself.
- You’re not told about your own changes, only other people’s.
- You can’t limit them to a range of cells. Google’s article points to Apps Script for rules like “when someone changes this range”.
- Viewers can set notifications but can’t see the names of the people who made the changes.
How do I stop people changing the cells that matter?
Prevention beats detective work. Protect the range (Google’s guide):
- Click Data > Protect sheets and ranges.
- Click Add a sheet or range, then choose Range or Sheet.
- Click Set permissions.
- Choose Show a warning when editing this range (people can still edit, but have to confirm first), or Restrict who can edit this range and pick who can.
- Click Done.
Google says protection shouldn’t be used as a security measure: people with access can still print, copy, paste, and import and export copies. The file owner can always edit protected ranges.
Where the built-in options stop
- Deleted rows and columns aren’t in cell edit history. Version history shows that they’re gone, but you have to compare versions by hand to see which row, and the version panel tells you who edited the file in that version, not who deleted that row.
- No searchable list. You can’t ask Sheets “show me every change Anna made last week” or “every change to column F”.
- Changes made by formulas don’t appear in a cell’s edit history.
- Formatting changes aren’t in cell edit history either.
- Restoring a version clears the cell-by-cell history for changes before the restore.
- Only editors can see edit history and version history.
- No alert for one range. Notification rules cover the whole file.
A free Apps Script that logs edits to a tab
If you’re comfortable with a little code, Apps Script can write each edit to a log tab. This version records time, who, tab, cell, old value and new value.
- In your spreadsheet, click Extensions > Apps Script.
- Replace the code with this and save:
function logEdit(e) {
var sheet = e.range.getSheet();
if (sheet.getName() === 'Edit log') return;
var ss = e.source;
var log = ss.getSheetByName('Edit log');
if (!log) {
log = ss.insertSheet('Edit log');
log.appendRow(['Time', 'Who', 'Tab', 'Cell', 'Old value', 'New value']);
}
var who = (e.user && e.user.getEmail()) || 'unknown';
var single = e.range.getNumRows() === 1 && e.range.getNumColumns() === 1;
var oldValue = single && e.oldValue !== undefined ? e.oldValue : '';
var newValue = single ? e.range.getDisplayValue() : '(' + e.range.getNumRows() * e.range.getNumColumns() + ' cells changed)';
log.appendRow([new Date(), who, sheet.getName(), e.range.getA1Notation(), safe(oldValue), safe(newValue)]);
}
// Stops a logged value that starts with = from turning into a formula.
function safe(value) {
value = String(value);
return /^[=+\-@]/.test(value) ? "'" + value : value;
}- In the Apps Script editor, click Triggers in the left menu, then Add Trigger.
- Choose the function logEdit, event source From spreadsheet, event type On edit, and save. Google asks you to authorize the script.
- Back in the sheet, protect the Edit log tab so only you can edit it (see the section above).
Why an installable trigger and not a function called onEdit? A function named onEdit runs as a simple trigger, and Google says simple triggers may or may not be able to tell who the current user is. The Session documentation says the email address isn’t available when a script runs without that user’s authorization, for example in a simple onEdit. An installable trigger runs under your account for every editor.
What this script can’t do:
- Names of people outside your organisation. Even with an installable trigger, Google only shares another editor’s email address in some cases, generally when they’re in the same Google Workspace domain as you. Otherwise the log says “unknown”.
- Old values for pastes or multi-cell changes. Google only provides the old and new value when a single cell was edited. The script logs “(N cells changed)” instead.
- Deleted rows. Deleting a row is a structure change, not an edit, so the edit trigger doesn’t run. A change trigger can tell you a row was removed, but not what was in it, unless you keep your own copy of the data.
- Changes made by formulas, scripts or the API. Google says script executions and API requests don’t cause triggers to run, and an edit trigger runs when a user changes a value.
- Anything before you set it up.
- Quota. Triggers count against your Apps Script quota: 90 minutes of trigger runtime a day on a personal account and 6 hours on Google Workspace, according to Google. A busy shared sheet can use that up.
- A tamper-proof record. Anyone who can edit the log tab can change it. Protecting the tab helps.
An add-on that logs deleted rows and pastes
Full disclosure: I built Kayabyte Sheet Guard for the cases above. Once you turn it on, it keeps a log tab in your spreadsheet with the time, who, tab, cell, old value and new value of each manual edit in the tabs you choose. It also logs pasted ranges cell by cell with their old values, deleted rows with what was in them, inserted rows and columns, sorts, and tabs added, renamed or deleted. You can search the log from the sidebar. Other editors don’t need the add-on.
What it doesn’t do: it doesn’t log changes made by formulas, scripts, other add-ons or the API, because Google doesn’t report them to add-ons. It doesn’t log formatting changes. It only logs from the moment it’s turned on, so it can’t tell you who deleted a row last month. Like the script above, it shows other editors’ email addresses only within the same Google Workspace organisation. Tabs larger than 50,000 cells are logged with new values only. The free plan logs one tab and keeps the last 1,000 changes. It is not a certified compliance system.
It’s on the Google Workspace™ Marketplace. The guide is at kayabyte.dev/workspace/sheet-guard.
FAQ
Can I see who deleted a row in Google Sheets? Not directly. Cell edit history doesn’t include deleted rows. Go through version history to find the version where the row disappears, and see who edited the file in that version.
Why does Show edit history say there’s no history for a cell? The cell may have been changed by a formula, by a row or column being added or deleted, or by a format change, none of which Google lists in cell edit history. A restored version also clears the earlier cell history.
Can viewers see who changed a cell? No. Google says you need edit access to see version history.
Will the Apps Script log show everyone’s name? Only when Google shares the editor’s identity with the script, which is generally when they’re in the same Google Workspace domain as you.
Last checked: 22 October 2026
Questions or corrections: support@kayabyte.dev. Google Sheets, Google Workspace and Google Apps Script are trademarks of Google LLC. Kayabyte is an independent developer and is not affiliated with Google.