Kayabyte

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:

  1. Open the spreadsheet on a computer.
  2. Right-click the cell.
  3. 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:

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):

  1. Click Last edit at the top right (you can also use File > Version history > See version history).
  2. Pick a version in the right panel. Sheets shows the file as it was then, with the changes and who made them.
  3. By default, Sheets hides unmodified rows so the changes are easier to find.
  4. 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:

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):

  1. Open the spreadsheet.
  2. Click Tools > Notification settings > Edit notifications.
  3. Under Notify you when, choose Any changes are made (or A user submits a form, if a form is linked).
  4. Under Notify you with, choose Email - right away or Email - daily digest.
  5. Click Save.

Limits worth knowing:

How do I stop people changing the cells that matter?

Prevention beats detective work. Protect the range (Google’s guide):

  1. Click Data > Protect sheets and ranges.
  2. Click Add a sheet or range, then choose Range or Sheet.
  3. Click Set permissions.
  4. 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.
  5. 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

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.

  1. In your spreadsheet, click Extensions > Apps Script.
  2. 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;
}
  1. In the Apps Script editor, click Triggers in the left menu, then Add Trigger.
  2. Choose the function logEdit, event source From spreadsheet, event type On edit, and save. Google asks you to authorize the script.
  3. 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:

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.