Drive

【GAS】ファイルを日次で自動バックアップ③ ファイル名に日付をつける

前回のおさらい

前回は大事なファイルをバックアップフォルダにコピーしました。


コピーの前段階として大事なファイルを取得しました。

const getImportantFiles = () => {
  const driveApp = DriveApp
  const folder = driveApp.getFolderById('ちょう大事なフォルダのID ※バックアップフォルダではない')
  const files = folder.getFiles()
}

取得したファイルをコピーをしました。

const getImportantFiles = () => {
  // ファイルを取得している
  const driveApp = DriveApp
  const folder = driveApp.getFolderById('ちょう大事なフォルダのID ※バックアップではない')
  const files = folder.getFiles()

  // バックアップフォルダにファイルのコピーを作成している
  while (files.hasNext()) {
    const backupFolder = driveApp.getFolderById('バックアップフォルダのID')
    const file = files.next()
    file.makeCopy(backupFolder)
  }
}


結果、コピーはできましたがバックアップしたファイルの名前に日付が入っていないので、いつのバックアップなのかひと目でわかりません。


今回はファイル名に日付を入れます。

ファイルをリネームする

ファイル名は、

20240314_バックアップ_ちょう大事なスプレッドシート

20240314_バックアップ_ちょう大事なドキュメント

といったようにします。


で、今はこうなっています。

で、ファイル名のうち↓の赤字部分が不足していて、青字部分が余分なことがわかります。

20240314_バックアップ_ちょう大事なスプレッドシート のコピー

したがいまして、赤字部分をつけたして、青文字部分を切り取ればいいんですね。

赤字部分をつけたす

コードのwhile文の中身を書き換えていきます。

  // バックアップフォルダにファイルのコピーを作成している
  while (files.hasNext()) {
    const backupFolder = driveApp.getFolderById('バックアップフォルダのID')
    const file = files.next()

    // ↓が今回書き換えたところ
    const backupFile = file.makeCopy(backupFolder)
    const date = new Date()
    const prefix = `${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}_バックアップ_`
    const newFileName = prefix + backupFile.getName().replace(' のコピー', '')
    const newFile = backupFile.setName(newFileName)
    console.log(newFile.getName())
  }


実行結果

このようになっていますのでうまくいってます。

日付を取得する

本日の日付を取得しているのは↓のコードです。

const date = new Date()

このようにすると本日の時間を持ったオブジェクトが生成されます。


で、このdateオブジェクトから「YYYYMMDD」形式でテキストを取得して、後ろに「_バックアップ_」という文字列を追加してます。

const prefix = `${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}_バックアップ_`


これで接頭辞が完成です。

余分な文字を取り除く

次にファイル名の先頭に接頭辞をくっつけ、コピーされたファイル名から「 のコピー」を取り除きます。

const newFileName = prefix + backupFile.getName().replace(' のコピー', '')

getNameメソッド ー ファイル名を取得するメソッド

構文:ファイルオブジェクト.getName()

戻り値:文字列

参照)Google Apps Scriptのマニュアル ファイルクラス

「YYYYMMDD_バックアップ_ちょう大事なスプレッドシート」という新たなファイル名がnewFileName変数に入ります。


最後に、コピーされたファイルのファイル名を新たなファイル名にリネームします。

const newFile = backupFile.setName(newFileName)

setNameメソッド ー ファイル名を変更するメソッド

構文:ファイルオブジェクト.setName(ファイル名)

戻り値:ファイルオブジェクト

参照)Google Apps Scriptのマニュアル ファイルクラス


あとはこいつを毎日自動実行すればオッケーです。

次回はGASのトリガー機能を使って毎日23時に実行するよう設定します。


テクマクマヤコン

Copied title and URL