ワザ箱 暮らしと仕事の悩みを、手順で解決するサイト

スプレッドシートを誤って消されても戻せるよう毎日自動でバックアップしたい

公開 2026年10月31日2026年10月時点の情報
先に結論

壊れたら、変更履歴で前の版を「コピーを作成」し、必要な部分だけ貼り戻します。
今後はApps Scriptで毎日コピーを作り、古い控えはゴミ箱へ移します。

  1. 壊れたら、最終編集アイコンから変更履歴を開く
  2. 「この版を復元」はファイルがその版に戻る
  3. 前の版を「コピーを作成」し、必要な列だけ貼り戻す
  4. 今後に備え、毎日コピーを作るコードを貼る
  5. setupTrigger を1回実行して許可する
  6. 毎日、新しい日付の控えが1つ加われば完了

※2026年10月時点の公式情報に基づきます。

木の棚に同じ緑のファイルボックスが4つ並び、横に小さなかご、壁に時計がある絵

1変更履歴から一部だけ取り出す

  1. 右上の最終編集アイコンを押す(編集権限が必要)
  2. 右のパネルで、壊れる前の版の横のその他アイコン → 「コピーを作成」
  3. 名前と保存場所を決めて「OK」
  4. コピーから必要なセル範囲だけをコピーし、元のファイルへ貼る(壊れた後の正しい編集を上書きしない)

「この版を復元」はファイルがその版に戻り、セル単位の編集履歴も消えます。
出典: ファイルの変更内容を確認する

2毎日コピーを残すコードを貼る

  1. マイドライブに控え用フォルダをシートごとに1つ作り、開いた時のアドレスの folders/ の後ろの文字列(この記事の案内)をIDとして控える
  2. 元のスプレッドシートで「拡張機能」 → 「Apps Script」
  3. 下のコードに置き換え、1行目にIDを入れて保存
  4. プルダウンで setupTrigger を「実行」(実行は1人だけ)し、続けて backupDaily も1回実行して控えができるか見る
const FOLDER_ID = 'ここにフォルダID';
const KEEP = 14; // 残す数

function backupDaily() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const folder = DriveApp.getFolderById(FOLDER_ID);
  const prefix = '控え_' + ss.getName() + '_';
  const stamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmm');
  DriveApp.getFileById(ss.getId()).makeCopy(prefix + stamp, folder);

  const list = [];
  const it = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
  while (it.hasNext()) {
    const f = it.next();
    if (f.getName().startsWith(prefix) && !f.isTrashed()) list.push(f);
  }
  list.sort((a, b) => b.getDateCreated() - a.getDateCreated());
  list.slice(KEEP).forEach((f) => f.setTrashed(true));
}

function setupTrigger() {
  ScriptApp.getProjectTriggers().forEach((t) => {
    if (t.getHandlerFunction() === 'backupDaily') ScriptApp.deleteTrigger(t);
  });
  ScriptApp.newTrigger('backupDaily').timeBased().atHour(3).everyDays(1).create();
}

setupTrigger で毎日3時台(スクリプトのタイムゾーン)に backupDaily が動きます。承認で「このアプリは確認されていません」と出たら「詳細」→「(プロジェクト名)に移動(安全ではありません)」で進みます(自分で貼ったコードの時だけ)。会社・学校のアカウントは管理者の承認が要る場合があります。
出典: Gmail と Google スプレッドシートでメールへの差し込みを作成する / Class ClockTriggerBuilder / インストール可能なトリガー / チームの休暇カレンダーを作成する

古い控えは消さずにゴミ箱へ

KEEPの数を超えた古い控えゴミ箱

名前が「控え_元のファイル名_」で始まるものだけを作成日の新しい順に数える

移した控えは30日以内ならドライブのゴミ箱で右クリック→「復元」でき、過ぎると完全に削除されます。
出典: Google ドライブで削除したファイルを復元する

フォルダを複数シートで共用すると、「売上」の実行が「売上_2025」の控えも移します。

戻せない・控えが増えない時のチェックリスト

あわせて読みたい

GASで宛先ごとに名前や本文の一部を変えてメールを一括送信したい Googleカレンダーの予定を手でシートに転記して工数を集計している スプレッドシートを毎回PDFでダウンロードしてフォルダに移すのが面倒 スプレッドシートやExcelをPDFにすると印刷範囲がずれて端に寄る