指定したフォルダ内の重複しているファイルで、
作成日の新しい方だけ削除したいのですが、どうすれば良いでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
多分詰まっているのは FileIterator のせいじゃないかと思います。
名前と異なり、iterable じゃないので、スプレッド演算子で取り出せません。面倒ですが hasNext と next をつかって取り出してあげる必要があります。
↓のサンプルコードでは同じ名前のフォルダは全て対象になると思うのでご注意ください(もちろんファイルはフォルダ内で重複しているものしか消されません)。
javascript
1const q373984 = ()=> { 2 const folderName = "フォルダ名"; 3 [...generatorForDriveIterator(DriveApp.getFoldersByName(folderName))].forEach(folder => { 4 const files = [...generatorForDriveIterator(folder.getFiles())].map(file => [file.getName(),file.getDateCreated(),file]); 5 const fileNames = [...new Set(files.map(([f])=> f)).values()]; 6 fileNames.forEach(n=> { 7 files.filter(([f])=> f===n).sort(compare).slice(1).forEach(([,,f])=> f.setTrashed(true)); 8 }); 9 }); 10} 11const compare = ([,a],[,b]) => a.getTime() > b.getTime() ? 1 : (a.getTime() < b.getTime() ? -1 : 0); 12function* generatorForDriveIterator(iter) { 13 while(iter.hasNext()) { 14 yield iter.next(); 15 } 16} 17
投稿2021/12/30 06:10
総合スコア12705
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。