はじめに
GoogleDriveの特定フォルダ内のデータを定期的にバックアップ(別フォルダにコピーを作成)したかったので、自動化してみました
コード
sample.js
/**
* メイン処理
*/
function main() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();
const copyBaseDirectoryID = sheet.getRange("B1").getValue();
const copyTargetParentDirectoryID = sheet.getRange("B2").getValue();
const outputParentDirectory = DriveApp.getFolderById(copyTargetParentDirectoryID);
const inputDirectory = DriveApp.getFolderById(copyBaseDirectoryID)
//現在日時を取得
const now = new Date();
//取得した現在日時を指定した表示形式に変換
const time = Utilities.formatDate(now, "Asia/Tokyo", "yyyy_MM_dd_HH_mm_ss");
// コピー先となるディレクトリを作成
const outputDirectory = outputParentDirectory.createFolder(time);
//フォルダ内のファイルを一括取得
const files = inputDirectory.getFiles();
// 指定箇所にファイルをコピー
for(let i = 0; files.hasNext(); i++) {
const file = files.next();
const baseData = DriveApp.getFileById(file.getId());
baseData.makeCopy(file.getName(), outputDirectory);
}
}
/**
* カスタムメニュー
*/
function onOpen()
{
const ui = SpreadsheetApp.getUi();
ui.createMenu("マクロ")
.addItem("ディレクトリのコピーを実行", "main")
.addToUi();
}
デモ
※閲覧できない場合はGoogleアカウントを一度ログアウトしてからお試し下さい
https://docs.google.com/spreadsheets/d/1NqdvyWAsJrqlW0bGN2u_YnO7EixlSVnmvZ4G4AhJQ70/edit#gid=0