Googleドライブでアジェンダ等を管理している場合、
oldフォルダに古いファイルを移す作業が起きることが多いです。
今回は、最終更新日の古いファイルをoldフォルダに移すスクリプトを作成してみます。
ファイル/フォルダの最終更新日時は、<ファイル/フォルダオブジェクト>.getLastUpdated()
で取得できます。
サンプルコードは以下にもおいてあります。
サンプルコード
以下のコードの
・fromfolderid
・destfolderid
・day, hours, minutes, seconds, milliseconds
を編集してから実行してください。
idは各フォルダのURLの右端から取得できます。
moveoldfile.js
function moveOldFile () {
// Config.
var fromfolderid = "13Tp_byKCyt79QUjipzGxYEAKnrqoptVO";
var destfolderid = "1THXNFdJ2_x62ZTZP43MLp1_loGpluQVF";
// 5日 × 24時間 × 60分 × 60秒 × 1000ミリ秒
// = つまり、5日以上古いファイルの場合移動する
var day = 5;
var hours = 24;
var minutes = 60;
var seconds = 60;
var milliseconds = 1000;
// main.
var from_folder = DriveApp.getFolderById(fromfolderid);
var dest_folder = DriveApp.getFolderById(destfolderid);
var files = from_folder.getFiles();
var folders = from_folder.getFolders();
// file.
while (files.hasNext()) {
var file = files.next();
if (new Date() - file.getLastUpdated() > day * hours * minutes * seconds * milliseconds) {
Logger.log(file.getName() + ": this file is move");
file.makeCopy(file.getName(), dest_folder);
file.setTrashed(true);
}
}
// folder
while (folders.hasNext()) {
var folder = folders.next();
if (new Date() - folder.getLastUpdated() > day * hours * minutes * seconds * milliseconds) {
folderMove(folder, dest_folder);
subFolder.setTrashed(true);
}
}
}
function folderMove(folder, dest) {
var folders = folder.getFolders();
var files = folder.getFiles();
while(files.hasNext()) {
var file = files.next();
file.makeCopy(file.getName(), dest);
}
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
var copyFolder = dest.createFolder(folderName);
folderCopy(subFolder, copyFolder);
}
}
Googleドライブのファイルやフォルダを取得します。
Googleドライブのシステムとして、ファイルとフォルダが明確にわけられています。
moveoldfile_pseudo.js
var from_folder = DriveApp.getFolderById(fromfolderid);
// file.
var files = from_folder.getFiles();
while (files.hasNext()) {
var file = files.next();
// if file is old, move to old folders.
}
// folder.
var folders = from_folder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
// if folder is old, move to old folders.
}
ファイルならばfile.getLastUpdated()
、
フォルダならばfolder.getLastUpdated()
でできます。
GoogleAppsScriptは、ファイル/フォルダの移動ができません。
そのため、ファイル/フォルダをコピーし、そのファイル/フォルダを削除することで擬似的に移動しています。
ファイル/フォルダの移動の詳細はGoogleドライブでファイルの移動を参考に。
以上のコードを設置し、実行すると
最終更新日時が5日以上前のフォルダがoldフォルダに移動していることが確認されると思います。
(今回は検証の都合上1日以上前のファイルを移動しています)
【実行前】
【実行後】