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

Python・GAS
ワタシ

ども、らーにゃです。今回は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点のみです。

修正する箇所

「★バックアップしたいファイル」の部分を変更

「★ここで指定したフォルダにファイルが入る」の部分を変更

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

ワタシ

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

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

今回は自動コピーと自動削除の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のおすすめ講座

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