【GAS】Googleスプレッドシートの定期バックアップを自動化する方法

はじめに

Googleスプレッドシートは日常業務や個人の記録に欠かせない便利なツールです。しかし、作業ミスや誤削除によって大事なデータが失われるリスクがあります。そこで役立つのが「自動バックアップ」です。

Google Apps Script(以下、GAS)を利用すれば、スプレッドシートを自動的にコピーし、日付ごとに履歴を残す仕組みを簡単に実装できます。本記事では、基本的な実装から応用方法までを解説します。

自動バックアップの基本設計

まずは「何を、どこに、どのくらいの頻度でバックアップするか」を整理しましょう。

  • 対象:バックアップしたいスプレッドシート
  • 保存先:Googleドライブ内の特定フォルダ
  • 命名規則:ファイル名に日付を付与
  • 実行頻度:毎日、毎週、毎月など

これをGASのスクリプトで定義し、トリガーを設定することで自動化が可能です。

バックアップ用スクリプトの実装

以下は、対象のスプレッドシートをコピーし、日付付きで保存するサンプルコードです。

function backupSpreadsheet() {
  // バックアップ元のシートIDを指定
  var sourceId = "YOUR_SPREADSHEET_ID";
  var sourceFile = DriveApp.getFileById(sourceId);

  // バックアップ先フォルダのIDを指定
  var folderId = "YOUR_FOLDER_ID";
  var folder = DriveApp.getFolderById(folderId);

  // 日付をファイル名に付与
  var date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd");
  var newFileName = sourceFile.getName() + "_backup_" + date;

  // ファイルをコピーして保存
  sourceFile.makeCopy(newFileName, folder);
}

このスクリプトを保存して実行すると、指定したフォルダに「シート名backup日付」という形式でコピーが作成されます。

トリガーによる定期実行の設定

GASの魅力は「時間主導型トリガー」による自動化です。

  1. スクリプトエディタのメニューから「編集 → 現在のプロジェクトのトリガー」を選択
  2. 「トリガーを追加」で backupSpreadsheet を選び、実行頻度を「毎日午前9時」などに設定
  3. 保存すれば、指定したスケジュールで自動バックアップが実行されます

これにより、人の手を介さずに履歴を残せるようになります。

応用:複数シートやフォルダ管理への展開

上記コードを少し改良すれば、複数のスプレッドシートを一括バックアップしたり、月ごとにフォルダを分けて保存することも可能です。

例えば複数IDを配列で管理する方法:

function backupMultipleSheets() {
  var sheetIds = ["ID1", "ID2", "ID3"];
  var folderId = "YOUR_FOLDER_ID";
  var folder = DriveApp.getFolderById(folderId);
  var date = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd");

  sheetIds.forEach(function(id) {
    var file = DriveApp.getFileById(id);
    var newFileName = file.getName() + "_backup_" + date;
    file.makeCopy(newFileName, folder);
  });
}

これにより、業務で利用している複数のファイルをまとめてバックアップする仕組みを作れます。

おわりに

GASを活用することで、Googleスプレッドシートのバックアップ作業を完全自動化できます。これにより、ヒューマンエラーを減らし、安全にデータを管理できます。

さらに応用すれば、バックアップファイルを月ごとに整理したり、特定の条件で古いファイルを削除する仕組みも構築可能です。

また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です