【GAS】Google Driveで自動バックアップを行うプログラムを作る

ワタシ

ども、らーにゃです。今回はGASの活用についてまとめます。

身の回りのことをもっと自動化できないものか?

仕事でもプライベートでも忙しくなるほどに自動化の必要性・重要性は増していると思います。

「プログラミングど素人の自分がどうやりゃええんや…」

と頭を抱えることが多くありました。

そんな中、最近GAS(Google Apps Script)を勉強している中で

『ど素人の自分でもコピペするだけである程度出来た!』

と思えるものが出来たので、今までやってきたことを余すことなく記載します。

自動化やGASのプログラミングに興味があるけど、どんなことなら出来るのか…と思っている初心者の方のご参考なれば幸いです。(‘ω’)ノ

今回の論点整理

今回行うのはGoogle Drive内のファイルの自動バックアッププログラムです。

同じGoogleのサービスであるGASを使い、指定ファイルを指定フォルダに格納してバックアップをとるプログラムを作ります。

イメージは以下の通り。

具体的には下記の3点について触れていきます。

今回の論点
  • プログラムの全容
  • 自動コピーと自動削除について
  • 自作プログラムへの拡張

順に触れていきます。

Google Apps Scriptの活用ポイント

プログラムの全容

まず結論から言いますと、下記のようなコードで実行が出来ます。

基本的には下記のプログラムをコピペして頂ければ使えるはずです。

プログラムのコード

//ファイルをコピー(バックアップ)する
function Backup() {  
  var file = DriveApp.getFileById('★バックアップしたいファイル');
  var folder = DriveApp.getFolderById('★ここで指定したフォルダにファイルが入る'); 
  file.makeCopy('バックアップ用ファイル'+' '+Utilities.formatDate(new Date(), 'JST', 'yyyy-MM-dd'),folder);   //まずはBackupを一回実行し、その後はBackupAndDeleteを実行
}
//前日にコピーしたファイルを削除する

function copyAndDelete() {
var now = new Date();

//現在時刻-1日を取得してコピーと同様にフォーマット化
var yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
var date = Utilities.formatDate(yesterday, 'JST', 'yyyy-MM-dd');

//前日のファイル名を指定して削除(ゴミ箱へ移動)
var fileData = DriveApp.getFilesByName('バックアップ用ファイル'+' '+date);
var getData = fileData.next().setTrashed(true);
}

大きくは2つのコードを動かします。

1点目が、指定ファイルを指定して該当フォルダにコピーしてファイルを増やしていく作業です。

2点目が、指定ファイルを指定してごみ箱フォルダに移動をする(削除をする)作業です。

どちらもコードで記載するとてもシンプルで、3~5行で完結します。

今回はファイル名を指定した文言にしていますが、当然該当ファイルの名前を読み込んで、同名で保存することなども可能です。

ただ、ファイル名は指定してしまった方が、”前日分のコピーは消す(ゴミ箱へ移動する)”みたいな指示が出しやすいです。

尚、バックアップする対象のファイルと該当のフォルダを指定するために、上記をコピペしていただいた上で変更する点は下記の2点のみです。

修正する箇所
①「★バックアップしたいファイル」の部分を修正
②「★ここで指定したフォルダにファイルが入る」の部分を修正

上記はそれぞれアドレスの下記の部分を参照すればいれるべき項目が見えます。

①に関してはココ👇 (d/と/editの間)

②に関してはココ👇 (folders/の後)

どちらも赤いにした箇所がキーになるコードです。

ワタシ

予備知識なくともコピペでいいので簡単にできちゃいます。

自動コピーと自動削除について

今回は自動コピーと自動削除の2つのプログラムを記載しました。

では、そもそもなんでこの2種類のプログラムが必要なのか?

それは、自動削除をいれないとひたすら容量を食ってしまうから、というのが答えです。

何かというと、1ファイルを毎日更新するプログラムを作ったとすると、1年で同様のファイルが365個できてしまいます。

このプログラムを15個など作るとそれだけで5000個のファイルが複製される計算です。

仮に1メガバイトのファイルが該当だった場合、これだけで5ギガバイトを食う形になり、相当にGoogle Driveの容量を食ってしまう形になります。

無料のGoogle ドライブの1/3を1年たったら勝手に消費してしまう計算です。

逆に、”別にそれくらい借りるサーバー量を増やせばええわ!”ということであればあまり気にする必要はないです。

■ご参考リンク(Google Driveの容量ごとのプラン)

ただ、どのファイルに対して自動バックアップをしたのかをしっかりと覚えておかないと、忘れたころに

「なぜだが日に日に容量が減っていく…ウィルス…?」

みたいに疑心暗鬼になる可能性はありえます。

そのため、バックアッププログラムを作る時は単にコピーをするだけでなく、更新したら何等か同時に削除するようにすることもしておいた方がよいです。

今回は1日ごとに消えるようにしていますが、場合によっては3日前のを一つずつ消す。など

コピーと削除のルールは自身で決めてそれに合うプログラムに修正が可能です。

そのため、自分が考えるベストなコピーと削除の期間で設定してみてください。

ツマ

パワポを前のver間違えて消しちゃった!上書きしちゃった!みたいなことを守れるわけだね

まとめ

今回ポイントしてまとめてきたのは以下の2点です。

抑えたいポイント
  • プログラムの全容
    ▷該当ファイルを①指定フォルダに格納してコピー、②該当ファイルの古いデータを削除の2点
  • 自動コピーと自動削除について
    ▷自動コピーの留意点は際限なくファイルが増え続けるので、削除プログラムもセットで考えるのが吉。

今回は一例を出しましたが、GASを扱うことが出来ると、効率化・自動化をさせることは無限大です。

そしてこのGASの何と言っても素晴らしいのが環境不要!そしてしかもタダ!ということです。

仕事でつかえる部分があるのは勿論のこと、プライベートでも利活用できるオトク技がいっぱいなため、非エンジニアの人でもぜひトライしてみてください!

とにかく私のような初心者の人が手軽に試して面白い!と感じて飽きる前に習慣化できるように、今まで作ったコードは公開していくのでコピペして利用・参考にして下さい。

自身の今のスキルや状況に応じて、次のステップアップに向けた動きを付けて一緒に自動化・効率化の技術を上げていきましょう!(‘ω’)ノ

▼おすすめの動画学習(Udemy)

GASをサクっと学んでアウトプットするには動画教材がオススメです!

GASの解説は良質なコンテンツが多いです(´∀`*)

オススメ①:【新IDE対応】Google Apps Script(GAS)の基礎を完全習得 -初心者歓迎-【爆速で習得しちゃおう】 icon
オススメ②:独学で身につけるGAS(Google Apps Script)〜基礎編〜【業務効率化・自動化で残業を無くそう!】 icon
オススメ③:5つの活用事例から40のスキルが身につく、Google Apps Script(GAS)開発入門【ES2015対応】 icon

※評価が4.0を超えて割引にもなっているコンテンツは特におすすめです!

ご精読頂きありがとうございました!
m(_ _)m

2件のコメント

こんにちは!特定のフォルダ内のファイルをバックアップのため、ファイルの自動コピー&別フォルダに保存を1日毎にしたく、こちらのサイトにたどり着きましたmm (削除なしの予定です)
記事を拝見して作業しながら、わからなかったのが「★バックアップしたいファイル」の指定が、一つずつ(ファイルのユニークなID)の指定ではなく「本日にこのフォルダに生成されたファイル」という指定ができないかなと思ったのですが、該当ファイルの指定について、どういった考え方で指定をされているのでしょうか?
※バックアップしたいファイルを指定するのが1つずつファイルのユニークなID)だと、自動コピーができないのではないかな?と思った次第です。

ご質問ありがとうございます!
確認させて頂きました!

わかりづらい内容で申し訳なかったのですが、
このプログラムは、指定したスプレッドシートファイル1つを、指定したGoogleドライブのフォルダにコピーし続けるプログラムになっています。
(それぞれ必要なIDはどの部分が該当になるかはブログに画像を差し込み更新しました)

これを1回実行すると中身が同じスプレッドシートが1つできるのですが
この新しくできたスプレッドシートのIDは異なったものとして出来るので、
元々指定したファイルはユニークな状態で自動コピーがし続けられる形になります。

これでご回答になっておりますでしょうか??
ご確認頂けると幸いです。

コメントを残す

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