備忘録として,Google App Script (GAS) でファイルリストを更新日順に並び替える方法をまとめてみます.
フォルダ内の全ファイルリストを並び替える場合
コード
/* 並び替えを行うフォルダを取得 */
var folder = DriveApp.getFolderById("<フォルダID(≠フォルダ名)>"); // type Folder
/* フォルダ内の全ファイルのイテレータを取得 */
var file_itr = folder.getFiles(); // type FileIterator
/* ファイルイテレータを配列に変更 */
var file_list = [];
while(file_itr.hasNext()) {
var file = filesItr.next();
file_list.push(file);
}
/* 1. 更新日時の昇順に並び替え(破壊的ソート) */
file_list.sort(function(a,b){
if(a.getLastUpdated() < b.getLastUpdated()) return -1;
if(a.getLastUpdated() > b.getLastUpdated()) return 1;
return 0;
});
/* 2. 更新日時の降順に並び替え(破壊的ソート) */
file_list.sort(function(a,b){
if(a.getLastUpdated() > b.getLastUpdated()) return -1;
if(a.getLastUpdated() < b.getLastUpdated()) return 1;
return 0;
});
/* ソート後の配列の表示 */
for(let v of file_list) {
console.log("File name: " + v.getName() + ", " + "Last updated: " + v.getLastUpdated())
}
ちなみに,
フォルダIDとは.Google DriveのフォルダのURL https://drive.google.com/drive/u/1/folders/~~~~~~~~~
の ~~~~~~~~~
のことです.
結果
- 昇順の場合
File name: a.xlsx, Last updated: Sat May 09 2020 17:25:51 GMT+0900 (日本標準時)
File name: b.xlsx, Last updated: Sat May 09 2020 17:26:47 GMT+0900 (日本標準時)
File name: c.xlsx, Last updated: Sat May 09 2020 17:27:41 GMT+0900 (日本標準時)
File name: d.xlsx, Last updated: Sat May 09 2020 17:28:25 GMT+0900 (日本標準時)
- 降順の場合
File name: d.xlsx, Last updated: Sat May 09 2020 17:28:25 GMT+0900 (日本標準時)
File name: c.xlsx, Last updated: Sat May 09 2020 17:27:41 GMT+0900 (日本標準時)
File name: b.xlsx, Last updated: Sat May 09 2020 17:26:47 GMT+0900 (日本標準時)
File name: a.xlsx, Last updated: Sat May 09 2020 17:25:51 GMT+0900 (日本標準時)
同名ファイルを更新日時順に並び替える場合
Google Driveは同一フォルダ内に同名ファイルの存在を許すので,それらのファイルを区別したい場合があります.
同名ファイルのみを抽出して並び替えたい場合は,
上記4行目の
var file_itr = folder.getFiles(); // type FileIterator
を
var file_itr = folder.getFilesByName("ファイル名"); // type FileIterator
と変更することで"ファイル名"
のファイルのみを抽出することができます.
その他の部分は同じです.
(参考)
*「JavaScript つい忘れてしまう配列のソート方法」
https://qiita.com/PianoScoreJP/items/f0ff7345229871039672
- 「Class Folder | Apps Script | Google Developers」
https://developers.google.com/apps-script/reference/drive/folder