GASは、日々の業務効率化や、仕事の自動化など多岐にわたる使い方ができる、Googleが提供しているプラットフォームです。GASを使えば、GmailやGoogleドキュメント、スプレッドシートなどと組み合わせて様々なタスク・業務を自動化する事ができます。

業務を行う中で、Googleドライブに定期的にファイルを作成したり、フォルダを作って整理したり、Googleドライブを活用されている方も多いかと思います。そんな中で、間違ってファイルを削除したり、あるいは共有ドライブのファイルをいつの間にか他の人に削除されていたりといったトラブルもあるかと思います。
もちろん、Googleドライブは削除されても30日間はゴミ箱にファイルが入り、30日以内であれば元の場所にファイルを復旧できるものの、その期間を超えてしまえば完全にファイルが削除されてしまいます。
万が一に備えて、「自動的にファイルのバックアップを取る」事はとても大切です。今回はGASを使ってそれを自動化してみよう!という内容になります。
自動でファイルのバックアップを取るメリットとしては、数日ごとだったり、毎日新規にバックアップを作ることで、特定の時期のファイルの内容もすぐに遡れたりする事もメリットにもなります。
是非本記事の内容を実践して、大切なファイルを消去しないような体制を整えていきましょう!
バックアッププログラムの概要
今回は特定のファイル(オリジナルファイル)に対して、特定のタイミングを指定して、指定のフォルダへ自動的にバックアップファイルを作るプログラムを作成していきます。
今回の事例では、オリジナルファイルをスプレッドシートとして、指定フォルダへのバックアップを実現していきます。やりたいことを図示すると、以下のような構図になります。

それでは、実際にプログラムを作成していきましょう。
ファイルのバックアップを取るフォルダを作成する
まずは、バックアップするためのフォルダを作成して下さい。フォルダ名はお任せします。

今回は、バックアップしたいファイルである「大事なスプレッドシート」と同じディレクトリに、バックアップ用のフォルダを作成しました。(任意の場所で大丈夫です)

これで自動バックアップの準備が整いました。
それでは、実際にこの大事なスプレッドシートのバックアップを取るプログラムを作成していきましょう。
ファイルのバックアップを取ってみよう!
バックアップを取りたいスプレッドシートから、コンテナバインド型(拡張機能>App Script)でGASファイルを作成し、以下のコードを記述しましょう。
コンテナバインド型についてわからない人は、以下の記事も併せて読んでみて下さい。

function myBackUp() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // コンテナバインドされているスプレッドシートを取得
let spreadsheet_name = spreadsheet.getName(); // スプレッドシートのファイル名を取得
let file = DriveApp.getFileById(spreadsheet.getId()) // バックアップを取りたいファイルを指定
let folderId = 'ここにフォルダIDを記述';
let backup_folder = DriveApp.getFolderById(folderId); // フォルダの情報を取得
// バックアップの際のファイル名を指定
let buckup_fileName = "バックアップ_" + spreadsheet_name + "_" + Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd");
// スプレッドシート(オリジナル)をコピーして保存
file.makeCopy(buckup_fileName,backup_folder);
console.log("ファイルがバックアップされました");
}
このプログラムについて解説していきます。
まず2行目のプログラムで、コンテナバインドされているスプレッドシートの情報を取得する事ができます。スタンドアロン型(新規に独立したGASファイルを作成する方法)だと、別途スプレッドシートのIDを調べて記載する必要がありますが、この場合だとそれを省略する事ができます。ということでなるべくコンテナバインド型で書いておいた方が記述コストを削減する事ができます。
3行目で、2行目で取得したスプレッドシートの情報から、スプレッドシートのファイル名を取得しています。これはバックアップ用のファイルを作成する時に、オリジナルファイルのファイル名を活用するためです。spreadsheet_nameという変数に一度その情報を格納しておきます。
4行目では、バックアップを取りたいファイルを指定しています。2行目で取得したspreadsheetを用いて、ファイルIDを取得し、DriveApp.getFileById()でファイルの情報を取得しています。
6-7行目では、バックアップ先の指定のフォルダ情報を取得しています。フォルダIDの調べ方は非常に簡単で、URLを見れば簡単に調べる事が可能です。バックアップフォルダを開き、drive/google.com/drive/folders/~~~の~~~の部分が、フォルダIDになります。
各自バックアップフォルダのフォルダIDをそこに記載して下さい。
10行目で、バックアップの際のファイル名を作成しています。これは、オリジナルファイルの情報と、「いつバックアップされたか」という情報を含めたファイル名にしたいため、このように記述しています。
そして、最後の行で、オリジナルのスプレッドシートを指定のフォルダにコピーしています。
こうすることで、適切にバックアップフォルダに指定ファイルのバックアップを保存する事ができます。
バックアップ実行トリガーを設定する
それでは、先ほど作ったプログラムに実行トリガーを設定してみましょう。
実行トリガーとは、いつそのプログラムを実行するかの設定をする項目のことです。GAS編集画面の右手にあるメニューバーに「トリガー」がありますので、クリックして下さい。

右下の「トリガーを追加」をクリックして、いつプログラムを実行するか指定します。
今回は毎日バックアップをとってほしいので、下記のような設定でトリガーを設定します。

このようにする事で、毎日午前1-2時にバックアップファイルが作成されます。
この辺りのバックアップ頻度は自由に設定できるので、各自実行したい頻度を設定してみてください。
実際にバックアップが保存されるか確かめる
トリガーを設定してもその時間にならないと実行されないため、実際にバックアップが正常に動作するか確かめる目的で、一度プログラムを実行してみて下さい。
承認画面が出てきた場合は、画面に従って承認手続きを進めて下さい。詳しい手順は、こちらの記事にも記載しています。



実際に指定のフォルダ(「バックアップ用フォルダ」)に、バックアップを取りたいファイルのバックアップを取る事ができました!
これで毎日、指定のファイルについてバックアップを保存する事ができるようになります。
しかしながら、これだけではバックアップファイルが作成され続けてしまいます。そこで、古いファイルの自動削除の実装方法についてもこちらの記事で解説していますので、是非こちらも同時にご覧ください!

まとめ
今回はGoogleドライブにある指定のファイルの自動バックアップ方法について解説していきましたが、いかがだったでしょうか?
案外簡単で、しかもサクッと実装できるため、大事なファイルのバックアップを念の為とっておきたい!という方にとっては非常に役立つ内容になったのでは無いかなと思います。
ファイルサイズが大きくなればなるほど実行に時間もかかりますが、対策はしておいて損はありません。是非、今回の記事を読んで業務に活用してみてはいかがでしょうか?


コメント