以前書いた「Google ドライブにある画像をスライドに一括挿入するGASコード」を元に、ファイル名順に画像を挿入したい、というクラウドワークス依頼を見つけました。
これに関連して、Shinji(@sakichi01_)さんから、Folder.getFilesメソッドにはソート機能が備わっていないという情報をいただきました。
「全部配列に取り出して、ソートをかける」ってプログラム経験がないと難しいのかも。。
getFilesにsort optionが無いって今知りました。— Shinji (@sakichi01_) 2020年1月6日
となると、スプレッドシートを使ってファイル名で並べ替えたり、配列に格納してソートしたり、何かしらの処理を挟む必要がありますが、リファレンスを眺めていたら、拡張サービス(Advanced Drive Service)の方にはorderByパラメーターが用意されているのを見つけました。
これを使えば、簡単にファイル名でソートできそうです。
指定したフォルダ内にあるJPEGファイルとPNGファイルの名前を降順で出力するスクリプト
試しに簡単な処理を書いてみました。
クラウドワークスに依頼が出ている以上、さすがに回答そのままな処理は書けないので、“指定したフォルダ内にあるJPEGファイルとPNGファイルの名前を降順で出力する”処理です。
function myFunction() { var folId = "(Google ドライブのフォルダID)"; var list = Drive.Files.list({ q: '"' + folId + '" in parents and (mimeType contains "jpeg" or mimeType contains "png")', spaces: 'drive', orderBy: 'title desc' }); if(list.items.length > 0) { list.items.forEach(function(file) { Logger.log(file.title); }); } }
上記コードを実行する前に、リソース → Google の拡張サービス から、「Drive API」をオンにする必要があります。
また、検索に使用するクエリ文字列は、下記リファレンスをご参照ください。
拡張サービスを有効にする必要がありますが、より柔軟にファイル処理を行いたいときは、こちらを使った方が良いかもしれません。クエリによる検索も非常に便利です。
この記事へのコメントはありません。