当サイトの記事にはプロモーションが含まれています。

Googleスプレッドシートのデータを別の人が上書きしても戻せる?9割が知らない完全復元ガイド

パソコンパソコン・スマホ教室
スポンサーリンク

「あれ?さっきまであったデータが消えてる!」そんな経験、ありませんか?チームで共有しているGoogleスプレッドシートは、誰かが誤って上書きしてしまうリスクが常につきまといます。特に複数人が同時編集できる環境では、気づいたときには大切なデータが別のデータで書き換えられていた、なんてことが頻繁に起こります。

でも、安心してください。Googleスプレッドシートには、上書きされたデータをほぼ確実に復元できる機能が標準で備わっています。しかも、ほとんどの人がその存在を知らないか、使い方を把握していないまま「もうダメだ…」と諦めてしまっているのが現実です。

この記事では、別の人に上書きされたデータを取り戻す方法を、手順ごとにわかりやすく解説します。さらに、特定のセルだけを復元するプロ技や、再発防止策まで徹底的にお伝えします。

ここがポイント!

  • Googleスプレッドシートの「変更履歴」機能を使えば、他の人が上書きしたデータも復元できる
  • ファイル全体の復元だけでなく、特定のセルのみを部分的に取り戻す方法も存在する
  • 復元できる条件と権限の確認、そして再発防止のチーム運用ルールまでを網羅
スポンサーリンク
  1. そもそもなぜGoogleスプレッドシートは上書きデータを復元できるのか?
    1. 変更履歴が使える条件を確認しよう
  2. 別の人が上書きしたデータを復元する手順【完全版】
    1. ステップ1変更履歴を開く
    2. ステップ2誰がいつ上書きしたかを特定する
    3. ステップ3上書き前の状態に復元する
  3. 一部のセルだけ復元したい!プロが使う「部分復元テクニック」
    1. 特定のセルの編集者と変更内容を調べる方法
  4. 編集権限がなくて復元できない!そんな時の対処法
  5. 上書きトラブルを二度と起こさないための予防策と運用ルール
  6. 実際に現場で起きる「あるある」上書きトラブルとリアルな解決策
    1. 「誰がやったか言い出しにくい…」上書きの犯人を特定する方法
    2. 「Ctrl+Zで戻ったら別の人の作業も消えた!」という最悪のケース
    3. 「フィルターをかけたまま別の人が並び替えてデータがグチャグチャに!」
    4. 「スプレッドシートを共有した相手が退職してしまい、オーナーがいなくなった!」
  7. GASで作る「上書き事故ゼロ」の自動防衛システム
    1. GASコード①重要セルが上書きされた瞬間にメールで知らせる「リアルタイム上書き検知スクリプト」
    2. GASコード②毎日自動でバックアップを取る「定期バックアップスクリプト」
    3. GASコード③変更内容を専用ログシートに自動記録する「編集履歴ロガー」
  8. 「変更履歴があるから大丈夫」は落とし穴!変更履歴では救えないケース
  9. Googleスプレッドシートの上書き問題で本当に大事な「権限設計」の考え方
  10. ぶっちゃけこうした方がいい!
  11. Googleスプレッドシートの上書き復元に関するよくある疑問
    1. 変更履歴はいつまで保存されますか?
    2. 変更履歴を削除することはできますか?
    3. スマートフォンアプリからも復元できますか?
    4. Excelファイルをスプレッドシートにアップロードした場合も変更履歴は残りますか?
  12. 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
  13. まとめ

そもそもなぜGoogleスプレッドシートは上書きデータを復元できるのか?

Googleスプレッドシートのイメージ

Googleスプレッドシートのイメージ

Googleスプレッドシートの最大の特徴のひとつは、すべての編集内容が自動的にクラウド上に保存され続けるという点です。Excelのようにローカル保存のファイルとは根本的に仕組みが異なり、あなたがキーを叩くたびに、Googleのサーバーがその変更内容を時系列でスナップショットとして記録しています。

この仕組みを「変更履歴(バージョン履歴)」と呼びます。誰がいつ何を変更したかが、日時・編集者名・変更内容という形で詳細に残っています。さらに、各編集者には固有の色が割り当てられるため、複数人が編集した場合でも「この色の変更は誰の作業」というのが一目でわかる設計になっています。

重要なのは、この履歴はあなたが意識して保存操作をしなくても自動で積み上がっていくという点です。Googleスプレッドシートを開いて編集するだけで、バックグラウンドで変更履歴が蓄積されます。つまり、誰かに上書きされた瞬間も、その「上書き前の状態」はしっかりと記録されているのです。

変更履歴が使える条件を確認しよう

変更履歴を参照・復元するには、そのファイルに対して「編集者」権限を持っている必要があります。「閲覧者」や「コメント可」の権限では、変更履歴のメニュー自体がグレーアウトして選択できない状態になります。

もし変更履歴が表示されない場合は、まずファイルの上部に「閲覧のみ」と表示されていないか確認してください。表示されていた場合は、ファイルのオーナーに「編集権限」を付与してもらう必要があります。

別の人が上書きしたデータを復元する手順【完全版】

実際に、他の人に上書きされてしまったデータを取り戻す具体的な手順を解説します。焦らずに、ひとつひとつ確認しながら進めましょう。

ステップ1変更履歴を開く

まずはGoogleスプレッドシートを開いた状態で、変更履歴の画面にアクセスします。方法は3つあります。いずれも同じ画面に到達できるので、使いやすい方法を選んでください。

最も直感的なのはメニューバーからのアクセスで、画面上部の「ファイル」をクリックし、「変更履歴」→「変更履歴を表示」の順に選択します。キーボードショートカットを使う場合は、WindowsならCtrl+Alt+Shift+H、MacならCommand+Option+Shift+Hで即座に開けます。もうひとつの方法として、スプレッドシートのタイトル下に表示されている「最終編集〇分前」というリンクテキストをクリックしても同じ画面に移動できます。

ステップ2誰がいつ上書きしたかを特定する

変更履歴の画面を開くと、画面右側にパネルが表示され、日時・編集者名・変更内容が時系列で並んでいます。上書きが起きた時刻の直前の版(バージョン)を探しましょう。

各版をクリックすると、その時点のスプレッドシートの状態がプレビュー表示されます。変更されたセルは色で強調表示されるため、どの部分が書き換わったのかが一目瞭然です。複数の細かい編集が一つのブロックにまとめられている場合は、ブロック左側の▶マークをクリックして展開すると、より細かい時刻単位で確認できます。

ステップ3上書き前の状態に復元する

復元したい版を見つけたら、画面上部に表示されている緑色の「この版を復元」ボタンをクリックします。確認のポップアップが表示されるので、再度「復元」をクリックすれば完了です。

ここで一つ、多くの方が心配する点があります。「古い版に戻したら、その後に行った別の作業も消えてしまうのでは?」という疑問です。答えはノーです。復元後も変更履歴はすべて保持されます。万が一「戻しすぎた!」と思ったら、変更履歴を再度開いて、より新しい版に戻せばいいのです。

一部のセルだけ復元したい!プロが使う「部分復元テクニック」

スプレッドシート全体を以前の版に戻すのではなく、「上書きされた特定のセルだけを取り戻したい」というケースは非常に多いです。例えば、A列のデータは最新版のままにして、誰かに消されてしまったF列の数式だけを取り戻したい、という状況です。

残念ながら、「特定セルだけを復元する」ボタンはGoogleスプレッドシートには存在しません。しかし、コピー&ペーストを使った部分復元の裏技があります。

  1. 変更履歴を開き、復元したいデータが存在していた版を選択してプレビュー表示にする。
  2. プレビュー画面上で、取り戻したいセルやセル範囲をドラッグして選択し、Ctrl+C(MacはCommand+C)でコピーする。
  3. 画面左上の矢印(←)をクリックして、変更履歴から抜けて現在の編集画面に戻る(この操作ではファイルは復元されません)。
  4. 現在の編集画面で、コピーしたデータを貼り付けたいセルを選択し、Ctrl+V(MacはCommand+V)でペーストする。

この方法を使えば、ファイル全体を古い状態に戻すことなく、必要なデータだけを外科的に復元できます。大規模な共有シートで一部分だけ修正したい場合に特に有効なテクニックです。

特定のセルの編集者と変更内容を調べる方法

「誰がこのセルを書き換えたのか?」を素早く確認したい場合、ファイル全体の変更履歴を開かなくても確認する方法があります。確認したいセルを右クリックし、表示されるメニューから「編集履歴を表示」を選択してください。そのセルに対して行われた変更が、誰がいつどの値から何に書き換えたかという形で確認できます。

ただし、数式バーの編集やフォーマット変更など、一部の操作は履歴に記録されないことがあるため注意が必要です。

編集権限がなくて復元できない!そんな時の対処法

自分に編集権限がなく変更履歴にアクセスできない場合、または他の共有メンバーがファイル自体を削除してしまった場合は、自分ひとりでは対処できません。

ファイルのオーナーに連絡するのが最善の方法です。オーナーは編集権限を持つすべてのユーザーよりも強い権限を持ち、削除されたファイルであっても以下の手順でデータの復元が可能です。Googleドライブの「マイドライブ」ページ上部の検索バー横にあるアイコンから「ゴミ箱」を開き、該当ファイルを右クリックして「復元」を選択することで、削除されたファイルをマイドライブに戻せます。この操作は削除から30日以内であれば有効です。

また、共有ファイルを誰かが削除した場合、そのデータは誰のゴミ箱にも入らないため、オーナー権限でのアクセス管理が特に重要になります。

上書きトラブルを二度と起こさないための予防策と運用ルール

復元方法を知っておくことも大切ですが、そもそもトラブルが起きにくい環境を整えることがより重要です。チームでGoogleスプレッドシートを運用する際に実践したい予防策をご紹介します。

まず最も効果的なのは、変更してはいけない列やシートに「保護」を設定することです。Googleスプレッドシートでは、特定のセル範囲やシート全体に対して編集ロックをかけられます。データ>シートと範囲を保護から設定でき、特定のメンバーだけが編集できるようにするか、全員に警告を表示するかを選べます。

次に有効なのが、重要な作業前にバージョンに名前をつける習慣です。「ファイル」→「変更履歴」→「現在の版に名前をつける」から、「2026年3月・月次報告書確定版」のような分かりやすい名前を付けておくと、後から復元ポイントを探す際に格段に楽になります。1つのスプレッドシートにつき最大15個の名前付きバージョンを保存できます。

さらに、フィルタビューを活用することで、自分だけの作業空間を確保できます。通常のフィルター機能を使うと他のメンバーの画面にも影響が出てしまいますが、「データ」→「フィルタビューを作成」を使えば、自分の並び替えや絞り込み操作が他のメンバーには一切反映されません。大量のデータを並び替えながら作業する際は必ずフィルタビューを使うことをチームルールにしましょう。

以下が追加コンテンツです(HTML形式)。

実際に現場で起きる「あるある」上書きトラブルとリアルな解決策

Googleスプレッドシートのイメージ

Googleスプレッドシートのイメージ

変更履歴の使い方を覚えても、「あれ、この状況はどうすれば?」と詰まることが実際にはたくさんあります。チームで共有スプレッドシートを使っていると、教科書には載っていないシチュエーションが必ず発生します。ここでは、現場で本当によく起きるトラブルとその具体的な対処法を、体験に近い目線で解説します。

「誰がやったか言い出しにくい…」上書きの犯人を特定する方法

チームで使っているスプレッドシートで、突然データが書き変わっていたとき、「誰がやったんだろう…でも言い出しにくいな」という気まずい空気、経験ありませんか?これ、実はGoogleスプレッドシートの変更履歴を見れば一発で解決できます。

変更履歴を開くと、編集者の名前がGoogleアカウントのプロフィール名で表示されます。しかも、変更されたセルの色がその人のカラーで強調されるので、誰がどの部分を変えたのかが視覚的に一目でわかります。「言い出しにくい」どころか、証拠が全部残っているのです。

ただし、ここで大切なのは「犯人探しのために使うのではなく、何が起きたかを客観的に把握するために使う」という姿勢です。上書きの多くは悪意ではなく単純なミスや勘違いから起きています。変更履歴は責任追及のツールではなく、チームの問題解決ツールとして使いましょう。

「Ctrl+Zで戻ったら別の人の作業も消えた!」という最悪のケース

複数人が同時作業中にミスをしてCtrl+Zを連打してしまい、自分だけでなく別のメンバーの作業まで巻き戻してしまった…というのは、共有スプレッドシートを使い始めたばかりのチームに非常によく起きるトラブルです。

この場合の対処法は、Ctrl+Zをこれ以上押すのをすぐに止め、変更履歴から復元することです。Ctrl+Zを繰り返すと状況が悪化するだけです。落ち着いて変更履歴を開き、一番直近の「正しい状態」の版を探して、その版をプレビューしながら必要なデータだけをコピーして復元する「部分復元テクニック」(前述)を使いましょう。

Ctrl+Zはローカルの個人操作には有効ですが、複数人のリアルタイム共同編集環境では使わない方が無難です。これを知らずにCtrl+Zを使い続けている人は非常に多いのです。

「フィルターをかけたまま別の人が並び替えてデータがグチャグチャに!」

これも現場でよく聞く事故です。通常のフィルター機能を使っている最中に、別のメンバーが並び替えを実行してしまい、元のデータ順序が崩れてしまうケースです。フィルターをかけた状態は他のメンバーにも反映されてしまうため、誰かが並び替えると全員の画面に影響が出ます。

解決策はシンプルで、「フィルタビュー」を使うことです。「データ」→「フィルタビューを作成」から自分専用のビューを作れば、自分の並び替えや絞り込みが他のメンバーに一切影響しません。そして「フィルタビューに名前をつけて保存」しておけば、次回以降も同じビューを呼び出せます。

もしすでにデータがグチャグチャになってしまった場合は、変更履歴から並び替えが起きる前の版を探して復元するか、部分復元テクニックで元の順序のデータをコピーして貼り直しましょう。

「スプレッドシートを共有した相手が退職してしまい、オーナーがいなくなった!」

これは中小企業やフリーランスとの協業でよく起きる問題です。ファイルのオーナーが退職・離脱してしまうと、そのGoogleアカウントが削除された時点でファイルそのものが失われる可能性があります。

予防策として、重要なスプレッドシートのオーナーは必ず組織のアカウント(会社の共有Googleアカウントなど)に設定しておくことが鉄則です。オーナーの変更は「共有」設定から行えます。すでに退職者がオーナーの場合は、Google Workspaceの管理者に依頼して、管理コンソールからオーナー移転を行ってもらいましょう。個人のGmailアカウントが使われている場合は、このような管理者経由の救済が使えないため、早急にオーナー変更することを強くお勧めします。

GASで作る「上書き事故ゼロ」の自動防衛システム

ここからが本番です。変更履歴は「事後に復元する」ための仕組みですが、Google Apps Script(GAS)を使えば「事故が起きた瞬間に気づく仕組み」や「自動でバックアップを取る仕組み」を自分で作れます。難しそうに見えますが、コードをコピー&ペーストするだけで使えます。

GASの使い方の基本は、スプレッドシートを開いた状態で「拡張機能」→「Apps Script」をクリックするだけです。開いたエディタに以下のコードを貼り付け、保存すれば動作します。

GASコード①重要セルが上書きされた瞬間にメールで知らせる「リアルタイム上書き検知スクリプト」

このスクリプトは、特定のシートの特定の範囲が編集されたとき、指定したメールアドレスに即座に通知を送ります。「自分が気づいていないうちに上書きされていた」という事態を防ぐための最前線の防衛コードです。


/**
* 重要セルの上書きをリアルタイムでメール通知するスクリプト
* ※インストール型トリガーを使用(MailApp利用のため)
* 設定後、「通知トリガーを設定する」を一度だけ実行してください
*/

// ★設定エリアここだけ変更してください
var CONFIG = {
notifyEmail: "your-email@gmail.com", // 通知を受け取るメールアドレス
watchSheetName: "データ管理シート", // 監視するシート名
watchRange: "A1:F50", // 監視するセル範囲
spreadsheetName: "月次売上管理表" // スプレッドシートの名前(メール件名に使用)
};

/**
* インストール型onEditトリガーで動作する関数
* 直接呼び出さずにトリガー経由で動作させます
*/
function installedOnEdit(e) {
var range = e.range;
var sheetName = range.getSheet().getName();

// 監視対象シートかどうかチェック
if (sheetName !== CONFIG.watchSheetName) return;

// 監視対象範囲内かどうかチェック
var watchRange = e.source.getSheetByName(CONFIG.watchSheetName)
.getRange(CONFIG.watchRange);
if (!isRangeOverlap(range, watchRange)) return;

// 編集情報を整形
var editor = Session.getActiveUser().getEmail() || "不明なユーザー";
var cellAddress = range.getA1Notation();
var newValue = e.value || "(空白・削除)";
var oldValue = e.oldValue || "(元データなし)";
var editTime = Utilities.formatDate(
new Date(),
Session.getScriptTimeZone(),
"yyyy年MM月dd日 HH:mm:ss"
);

// メール本文の作成
var subject = "【上書き検知】" + CONFIG.spreadsheetName + "が編集されました";
var body = [
"スプレッドシートの監視対象範囲が編集されました。",
"",
"━━━━━━━━━━━━━━━━━━━━",
"■ 編集日時" + editTime,
"■ 編集者 " + editor,
"■ シート名" + sheetName,
"■ 編集セル" + cellAddress,
"■ 変更前の値" + oldValue,
"■ 変更後の値" + newValue,
"━━━━━━━━━━━━━━━━━━━━",
"",
"問題がある場合は変更履歴から復元してください。",
"ファイル" + e.source.getUrl()
].join("\n");

MailApp.sendEmail(CONFIG.notifyEmail, subject, body);
}

/**
* 2つのRangeが重なっているか判定するヘルパー関数
*/
function isRangeOverlap(range1, range2) {
return !(
range1.getLastRow() < range2.getRow() || range1.getRow() > range2.getLastRow() ||
range1.getLastColumn() < range2.getColumn() || range1.getColumn() > range2.getLastColumn()
);
}

/**
* ★最初に一度だけこの関数を手動実行してトリガーを登録する
*/
function setupNotificationTrigger() {
// 既存のトリガーを削除(重複防止)
var triggers = ScriptApp.getProjectTriggers();
triggers.forEach(function(trigger) {
if (trigger.getHandlerFunction() === "installedOnEdit") {
ScriptApp.deleteTrigger(trigger);
}
});

// インストール型onEditトリガーを新規作成
ScriptApp.newTrigger("installedOnEdit")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onEdit()
.create();

Browser.msgBox("通知トリガーの設定が完了しました!監視を開始します。");
}

使い方は、コードをApps Scriptエディタに貼り付けて保存した後、「setupNotificationTrigger」という関数を一度だけ手動実行するだけです。初回実行時にGoogleアカウントへのアクセス許可を求められますが、「許可」を選択してください。これ以降は、誰かが監視範囲を編集するたびに自動でメールが届くようになります。

GASコード②毎日自動でバックアップを取る「定期バックアップスクリプト」

変更履歴とは別に、「毎日決まった時刻にスプレッドシートのコピーをGoogleドライブに保存する」仕組みを作れます。変更履歴は削除できませんが、万が一アカウントに問題が生じた場合や、長期保存が必要な場合に備えた外部バックアップとして機能します。


/**
* 日次自動バックアップスクリプト
* 最大10世代分のバックアップを自動管理(古いものから自動削除)
* 設定後、「バックアップトリガーを設定する」を一度だけ実行してください
*/

// ★設定エリア
var BACKUP_CONFIG = {
backupFolderName: "スプレッドシート自動バックアップ", // バックアップ保存先フォルダ名
maxBackupCount: 10, // 保存するバックアップの最大数(古い順に自動削除)
notifyEmail: "" // バックアップ完了通知メール(不要なら空欄のまま)
};

/**
* バックアップを実行するメイン関数
*/
function createDailyBackup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssName = ss.getName();

// タイムスタンプ付きのバックアップ名を生成
var timestamp = Utilities.formatDate(
new Date(),
Session.getScriptTimeZone(),
"yyyy-MM-dd_HH-mm"
);
var backupName = " " + ssName + " " + timestamp;

// バックアップ用フォルダを取得または作成
var folders = DriveApp.getFoldersByName(BACKUP_CONFIG.backupFolderName);
var folder = folders.hasNext()
? folders.next()
: DriveApp.createFolder(BACKUP_CONFIG.backupFolderName);

// バックアップファイルを作成してフォルダに移動
var backupFile = DriveApp.getFileById(ss.getId()).makeCopy(backupName, folder);

// 古いバックアップを自動削除(最大件数を超えた場合)
var allFiles = ;
var filesIterator = folder.getFiles();
while (filesIterator.hasNext()) {
allFiles.push(filesIterator.next());
}

// 作成日時の古い順に並び替え
allFiles.sort(function(a, b) {
return a.getDateCreated() - b.getDateCreated();
});

// 最大件数を超えた古いファイルを削除
while (allFiles.length > BACKUP_CONFIG.maxBackupCount) {
var oldFile = allFiles.shift();
oldFile.setTrashed(true);
}

// 完了通知メールを送信(設定している場合のみ)
if (BACKUP_CONFIG.notifyEmail) {
var subject = "【バックアップ完了】" + ssName;
var body = backupName + " のバックアップが正常に作成されました。\n"
+ "保存先フォルダ" + BACKUP_CONFIG.backupFolderName + "\n"
+ "現在の保存件数" + Math.min(allFiles.length + 1, BACKUP_CONFIG.maxBackupCount) + "件";
MailApp.sendEmail(BACKUP_CONFIG.notifyEmail, subject, body);
}

Logger.log("バックアップ完了" + backupName);
}

/**
* ★最初に一度だけこの関数を手動実行して毎日のトリガーを設定する
* デフォルトは毎日午前2時〜3時の間に実行
*/
function setupDailyBackupTrigger() {
// 既存の同名トリガーを削除
ScriptApp.getProjectTriggers().forEach(function(trigger) {
if (trigger.getHandlerFunction() === "createDailyBackup") {
ScriptApp.deleteTrigger(trigger);
}
});

// 毎日深夜2時に実行するトリガーを作成
ScriptApp.newTrigger("createDailyBackup")
.timeBased()
.everyDays(1)
.atHour(2)
.create();

Browser.msgBox("毎日午前2時に自動バックアップが実行されます!");
}

このスクリプトを使えば、毎日深夜2時に自動でバックアップが作成され、古いものから順に削除されるので、Googleドライブの容量を圧迫せずに直近10日分のバックアップが常に保持されます。「最大保存件数」や「実行時刻」は設定エリアの数字を変えるだけで調整できます。

GASコード③変更内容を専用ログシートに自動記録する「編集履歴ロガー」

「誰が・いつ・何を・どのセルを」変更したかを、スプレッドシート内の専用シートに自動記録していくスクリプトです。変更履歴は確認できますが、後から「先月の特定の日に誰が何列を変えたか一覧でまとめたい」という場合には、このログシートが非常に役立ちます。


/**
* 編集内容を「変更ログ」シートに自動記録するスクリプト
* ※インストール型トリガーを使用
* 設定後、「ログトリガーを設定する」を一度だけ実行してください
*/

var LOG_SHEET_NAME = "変更ログ"; // ログを記録するシートの名前

/**
* 編集をログシートに記録するインストール型トリガー関数
*/
function logEditToSheet(e) {
var ss = e.source;
var editedSheet = e.range.getSheet();

// ログシート自体への編集は記録しない(無限ループ防止)
if (editedSheet.getName() === LOG_SHEET_NAME) return;

// ログシートを取得(なければ作成)
var logSheet = ss.getSheetByName(LOG_SHEET_NAME);
if (!logSheet) {
logSheet = ss.insertSheet(LOG_SHEET_NAME);
// ヘッダー行を追加
logSheet.appendRow[
"記録日時", "編集者", "シート名", "セル番地", "変更前の値", "変更後の値"
]);
// ヘッダーを太字・背景色で装飾
var headerRange = logSheet.getRange(1, 1, 1, 6);
headerRange.setFontWeight("bold");
headerRange.setBackground("#4a86e8");
headerRange.setFontColor("#ffffff");

// ログシートを保護(誰も直接編集できないように)
var protection = logSheet.protect();
protection.setDescription("自動変更ログ - 直接編集禁止");
protection.setWarningOnly(true); // 警告のみ(強制ロックにする場合はfalse)
}

// 記録するデータを整形
var timestamp = Utilities.formatDate(
new Date(),
ss.getSpreadsheetTimeZone(),
"yyyy/MM/dd HH:mm:ss"
);
var editor = Session.getActiveUser().getEmail() || "不明";
var sheetName = editedSheet.getName();
var cellAddress = e.range.getA1Notation();
var oldValue = (e.oldValue !== undefined && e.oldValue !== null) ? e.oldValue : "(空白)";
var newValue = (e.value !== undefined && e.value !== null) ? e.value : "(空白・削除)";

// ログシートの末尾に追記
logSheet.appendRow);
}

/**
* ★最初に一度だけこの関数を手動実行してトリガーを登録する
*/
function setupLogTrigger() {
ScriptApp.getProjectTriggers().forEach(function(trigger) {
if (trigger.getHandlerFunction() === "logEditToSheet") {
ScriptApp.deleteTrigger(trigger);
}
});

ScriptApp.newTrigger("logEditToSheet")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onEdit()
.create();

Browser.msgBox("変更ログの記録を開始しました!「" + LOG_SHEET_NAME + "」シートに蓄積されていきます。");
}

このスクリプトを仕込んでおくと、誰が何を書き換えたかが「変更ログ」シートに蓄積されていきます。変更履歴との違いは、このログはスプレッドシート内のデータとして保存されるため、CSVでエクスポートしたり、関数でフィルタリングしたりして自在に分析できるという点です。チームの編集頻度の把握や、特定のメンバーが多く変更している箇所の可視化にも使えます。

「変更履歴があるから大丈夫」は落とし穴!変更履歴では救えないケース

ここまで読んで「変更履歴さえあれば何でも戻せるじゃないか!」と思った方、少し立ち止まってください。変更履歴には、実は救えないケースが存在します。これを知らずに安心しきっている人が非常に多いのです。

まず、30日以上前にゴミ箱に入ったファイルは、ゴミ箱からも完全に削除されてしまいます。変更履歴はファイルが存在することが前提なので、ファイルそのものが消えてしまったら変更履歴も消えます。

次に、Google WorkspaceのBusinessプラン以上でないと「名前付きバージョンのみ表示」機能が使えないという制限があります。個人の無料Googleアカウントや一般的なGmailアカウントでは、細かいバージョン管理機能の一部が制限されています。

また、Googleのサーバー側の障害やアカウント停止・ハッキング被害が起きた場合は、変更履歴にアクセスできなくなる可能性があります。これは極めてまれなケースですが、ビジネスクリティカルなデータであれば、前述のGASによる自動バックアップやGoogleテイクアウトを使った定期エクスポートを組み合わせておくことが本当の安全策です。

さらに見落とされがちなのが、特定の操作は変更履歴に記録されないという点です。例えば、スクリプト(GAS)から`Range.setValue()`を使ってセルを書き換えた場合は、変更履歴のトリガーが発火しないため記録されません。GASで自動処理を走らせているシートで「何かおかしい」と思っても変更履歴に痕跡がない、という状況はこれが原因です。

Googleスプレッドシートの上書き問題で本当に大事な「権限設計」の考え方

上書きトラブルの根本原因のほとんどは、「全員に同じ編集権限を与えすぎている」ことにあります。Googleスプレッドシートの権限設計を少し見直すだけで、トラブルの発生率は劇的に下がります。

権限の種類 できること 変更履歴の閲覧・復元
オーナー すべての操作+権限管理 可能(最強権限)
編集者 セル編集・シート追加・削除など 可能
コメント可 コメント追加のみ(セル編集不可) 不可
閲覧者 閲覧のみ 不可

ここで大切な実践ルールが2つあります。1つ目は、「集計用のマスターシートやフォーミュラが入ったシートには、必ず保護をかける」というものです。各シートを右クリック→「シートを保護」から、特定のメンバーだけが編集できるよう制限できます。特に重要な数式が入っているセルや、参照元になっているデータ列は必ず保護対象にしましょう。

2つ目は、「閲覧だけでいい人に編集権限を与えない」ことです。これは当たり前に聞こえますが、「共有しやすいから全員編集可にしておこう」という惰性の運用が事故の温床になります。実際に編集が必要なメンバーだけを編集者にして、それ以外はコメント可または閲覧者に設定する。これだけで上書き事故の大半は防げます。

ぶっちゃけこうした方がいい!

ここまで、変更履歴の使い方・GASによる自動化・権限設計・現場トラブルの対処法と、かなり幅広くお伝えしました。全部を完璧にこなそうとするのは正直しんどいです。だからこそ、プロの現場目線でぶっちゃけて言わせてください。

「変更履歴を使いこなすよりも、そもそも上書きされたら困る範囲に保護をかける方が100倍楽で確実です。」

変更履歴での復元は「事後処理」であり、どんなに上手くやっても「ミスが起きた後の対応」に過ぎません。でも保護設定は「そもそもミスが起きない仕組み」です。大事な数式が入った列、マスターデータ、集計の基準値が入ったセル、これらには今すぐ保護をかけてください。5分もあればできます。

そしてGASが使えるなら、「上書き検知メール通知スクリプト」を仕込んでおくのが一番コスパが高いです。何かあった瞬間にメールが来るので、気づかないまま数週間が経過するという最悪の事態を防げます。変更履歴は90日以上前のデータを復元しようとすると版がまとめられて細かい確認が難しくなることがありますが、メール通知が来ていれば「あ、昨日の15時に誰かが書き換えたんだ」とすぐ特定できます。

個人的に最も推奨する運用は、「保護設定+上書き通知GAS+週1の名前付きバージョン保存」の3点セットです。これを設定しておけば、変更履歴をほとんど使わなくて済む環境が自然と整います。変更履歴はあくまでセーフティネット。使わないで済むのが一番いいし、それを実現する仕組みづくりこそが、本当の意味での「上書きトラブルゼロ」への道です。

このサイトをチップで応援

Googleスプレッドシートの上書き復元に関するよくある疑問

変更履歴はいつまで保存されますか?

Googleスプレッドシートの変更履歴には明確な期限がなく、基本的にずっと保存され続けます。ただし、編集が非常に多い場合は古い版が自動的にグループ化されたり、まとめられたりすることがあります。特定の版を確実に残しておきたい場合は、前述の「この版に名前をつける」機能を使うことで、その版が自動削除の対象から外れるようになります。

変更履歴を削除することはできますか?

Googleスプレッドシートには、変更履歴を直接削除する機能は存在しません。しかし、「ファイル」→「コピーを作成」でコピーしたファイルは、元ファイルの変更履歴が引き継がれず、白紙の変更履歴からスタートします。プロジェクト完了後に過去の編集履歴をリセットしたい場合などに有効です。ただし「同じユーザーと共有する」チェックボックスは外した状態でコピーを作成するのが重要です。

スマートフォンアプリからも復元できますか?

はい、できます。スマートフォン版のGoogleスプレッドシートアプリからも、変更履歴へのアクセスと復元操作が可能です。ただし操作画面がPC版より少し異なるため、メニューボタン(縦3点リーダーアイコン)から「変更履歴」を探してください。削除されたファイルについては、Googleドライブアプリのゴミ箱から復元できます。

Excelファイルをスプレッドシートにアップロードした場合も変更履歴は残りますか?

Googleスプレッドシート形式に変換した場合は変更履歴が記録されますが、.xlsxや.xls形式のまま編集している場合は変更履歴機能が制限される可能性があります。確実に変更履歴を活用するためには、ファイルをGoogleスプレッドシート形式に変換して使うことをお勧めします。「ファイル」→「Googleスプレッドシートとして保存」から変換可能です。

今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Googleスプレッドシートで別の人に上書きされたデータは、「変更履歴」機能を使えばほぼ確実に復元できます。ファイル全体を以前の状態に戻すだけでなく、特定のセルだけをコピー&ペーストで部分的に取り戻す方法もあり、状況に応じて使い分けることが大切です。

大切なのは「上書きされても終わりじゃない」という安心感を持ちながら、同時に「そもそもトラブルが起きにくい運用ルール」を整えておくことです。保護機能・バージョンへの名前付け・フィルタビューの活用、これら3つの習慣を取り入れるだけで、チームのスプレッドシート運用は驚くほどスムーズになります。

万が一のときも、この記事の手順を思い出して落ち着いて対処してください。Googleスプレッドシートは、あなたの大切なデータをしっかり守ってくれています。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました