2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google App Script (GAS)で,Google Driveフォルダ内のファイルリストを更新日時順に並び替える方法

Posted at

備忘録として,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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?