ADVERTISEMENT

【Googleドキュメント】Apps Scriptでドキュメントの定期バックアップ!Driveへの自動保存

【Googleドキュメント】Apps Scriptでドキュメントの定期バックアップ!Driveへの自動保存
🛡️ 超解決

Googleドキュメントで作成した大切な書類が、誤って編集されたり削除されたりする心配はありませんか?手動でバックアップを取るのも面倒ですし、忘れてしまうことも多いものです。Google Apps Scriptを使えば、ドキュメントを自動的にGoogle Driveに保存する仕組みを簡単に作れます。この記事では、Apps Scriptの基礎知識から実際のスクリプト作成、定期実行の設定までを詳しく解説します。これを読めば、もうバックアップを忘れることはありません。

【要点】Apps Scriptでドキュメントを自動バックアップする方法

  • バックアップ用の関数を作成: 指定したフォルダにドキュメントのコピーを保存するスクリプトを記述します。
  • トリガーで定期実行: 時間主導トリガーを設定し、毎日や毎週など自動でバックアップを実行します。
  • 最新バージョンだけを保持: 古いバックアップを削除することで、容量を節約できます。

ADVERTISEMENT

Apps Scriptによるバックアップの仕組み

Googleドキュメントのバックアップは、専用のソフトをインストールしなくても、ブラウザ上のApps Scriptで実現できます。スクリプトはGoogleドライブ内のドキュメントにアクセスし、その内容を複製して別の場所に保存します。保存先は専用のバックアップフォルダを作成しておくと管理が簡単です。トリガーを設定すれば、指定した時間に自動でスクリプトが実行され、手間をかけずにバックアップを続けられます。この仕組みを理解すれば、自分好みにカスタマイズすることも可能です。

Apps Scriptで定期バックアップを設定する手順

それでは、実際にスクリプトを作成し、定期実行まで行う手順を説明します。事前にバックアップ用のフォルダをGoogleドライブに作成しておいてください。

  1. スクリプトエディタを開く
    バックアップしたいGoogleドキュメントを開き、メニューから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。
  2. プロジェクト名を変更する
    左上の「無題のプロジェクト」をクリックして、わかりやすい名前(例:「ドキュメントバックアップ」)に変更します。
  3. バックアップ関数を記述する
    コードエディタに以下の関数を入力します。これはアクティブなドキュメントを複製し、指定したフォルダに保存するスクリプトです。
    function backupDocument() {
    var doc = DocumentApp.getActiveDocument();
    var folderId = 'YOUR_FOLDER_ID'; // バックアップフォルダのIDに置き換え
    var folder = DriveApp.getFolderById(folderId);
    var file = DriveApp.getFileById(doc.getId());
    file.makeCopy(doc.getName() + '_' + Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd_HHmmss'), folder);
    }

    YOUR_FOLDER_IDの部分は、先ほど作成したバックアップフォルダのIDに置き換えます。フォルダIDは、フォルダを開いたときのURL末尾にある英数字の文字列です。
  4. 関数を保存してテスト実行する
    Ctrl+S(MacではCmd+S)で保存します。その後、ツールバーの「実行」ボタンをクリックし、初回のみ承認ダイアログが表示されます。必要な権限を確認して「許可」をクリックします。正常に実行されれば、バックアップフォルダにコピーが作成されます。
  5. 定期実行のトリガーを設定する
    左側のメニューから「トリガー」(時計アイコン)をクリックし、「トリガーを追加」をクリックします。以下の設定を行います。
    ・実行する関数: backupDocument
    ・イベントのソース: 時間主導型
    ・時間ベースのトリガーのタイプ: 日付ベースのタイマー(毎日など)
    ・時刻の間隔: 午前0時〜1時など好きな時間帯
    「保存」をクリックして完了です。

バックアップスクリプトの注意点とトラブル対策

権限と承認の仕組み

スクリプトを初めて実行するときは、Googleアカウントへのアクセス許可が必要です。承認画面では「このアプリは確認されていません」と表示されることがありますが、自分用のスクリプトであれば「詳細」をクリックして「安全なページに移動(安全ではない可能性があります)」を選択し、権限を付与します。ただし、悪意のあるスクリプトではないことを確認してください。

トリガーが実行されない場合の確認事項

トリガーは正しく設定しても、以下の理由で実行されないことがあります。まず、スクリプトの「実行」メニューから手動で実行してエラーが出ないか確認します。エラーログは「表示」→「ログ」で確認できます。また、トリガーの制限として、無料アカウントでは1日あたりの実行時間や回数に上限があります。毎分のトリガーなど短い間隔は避け、1日1回程度に設定しましょう。

古いバックアップを自動削除する方法

バックアップを続けるとフォルダがどんどん肥大化します。そこで、一定数以上の古いコピーを削除する機能を追加します。以下のように、保存前または保存後に古いファイルを整理する関数を組み込むことができます。

  1. 古いファイルを削除する関数を追加する
    既存のbackupDocument関数内で、makeCopyの後に次のコードを追加します。
    var files = folder.getFilesByName(doc.getName());
    var maxFiles = 7; // 保持する最大数
    while (files.hasNext()) {
    var f = files.next();
    if (folder.getFilesByName(doc.getName()).length > maxFiles) {
    f.setTrashed(true);
    }
    }

    ただし、このコードは簡易的なものです。正しく古いファイルを特定するには、ファイル名に日時を含める工夫が必要です。
  2. 日時順にソートして古いものを削除する
    より正確には、ファイルの作成日時を比較して古いものを削除します。下記の関数を参考にしてください。
    function cleanUpBackups(folder, baseName, maxKeep) {
    var files = folder.getFilesByName(baseName);
    var fileList = [];
    while (files.hasNext()) {
    fileList.push(files.next());
    }
    fileList.sort(function(a,b){ return a.getDateCreated() - b.getDateCreated(); });
    while (fileList.length > maxKeep) {
    var oldest = fileList.shift();
    oldest.setTrashed(true);
    }
    }

    この関数をbackupDocument内で呼び出すことで、最新の7個だけを残すことができます。

ADVERTISEMENT

手動バックアップとApps Script自動バックアップの比較

項目 手動バックアップ Apps Script自動バックアップ
手間 毎回手動でコピーする必要がある 一度設定すれば自動で実行される
タイミング 任意のタイミングで可能だが忘れやすい 指定した日時に確実に実行される
エラー発生時 自分で気づく必要がある メール通知を設定すればエラーを検知できる
保存容量の管理 任意で削除できるが手間 スクリプトで古いものを自動削除可能

まとめ

この記事では、Google Apps Scriptを使ってGoogleドキュメントを定期的に自動バックアップする方法を解説しました。スクリプトエディタで数行のコードを書くだけで、毎日決まった時刻にドキュメントのコピーを指定フォルダに保存できます。さらに、古いバックアップを自動削除する機能を追加すれば、容量を気にせずに済みます。今回紹介した基本的なスクリプトを応用すれば、複数のドキュメントを一括バックアップしたり、特定の条件で保存先を変えたりすることも可能です。ぜひ自力でカスタマイズして、自分だけのバックアップシステムを構築してみてください。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。