私がコメントで言ったように、あなたが言及したスクリプトはあなたが望むものからそれほど遠くはありませんでした...しかし、あなたの状況はもう少し複雑であることを認めますので、これはストポリティクスの別の例外になるとしましょう;-)
とはいえ、このコードを徹底的にテストしたわけではないので、おそらく調整が必要になるでしょう。中間結果をテストするために、スクリプト全体にコメント付きのログをいくつか残しました。それらを使用することを躊躇しないでください。setTrashed
また、メールアドレスを更新することを考えて、手動で元に戻すことができることを忘れないでください;-) (新しいコードを試すときはそうする方が良いでしょう)
編集:今朝、スクリプトをテストするのに少し時間がかかりました。いくつかの「近似」がありました;-)ここに、うまく機能する「クリーン」バージョンがあります
function DeleteMyOldAvi() {
var pageSize = 200;
var files = null;
var token = null;
var i = null;
var totalFiles = []
var toDelete = []
Logger.clear()
do {
var result = DocsList.getAllFilesForPaging(pageSize, token);
var files = result.getFiles()
var token = result.getToken();
for(n=0;n<files.length;++n){
if(files[n].getName().toLowerCase().match('.avi')=='.avi'){
totalFiles.push([files[n].getName(),files[n].getDateCreated().getTime(),files[n].getId()]);// store name, Date created in mSec, ID in a subarray
// Logger.log(files[n].getName()+' created on '+Utilities.formatDate(files[n].getDateCreated(), 'GMT','MMM-dd-yyyy'))
}
}
} while (files.length == pageSize);// continue until job is done
totalFiles.sort(function(x,y){ // sort array on milliseconds date created (numeric/descending)
var xp = x[1];
var yp = y[1];
return yp-xp ;
});
// Logger.log(totalFiles.length)
if(totalFiles.length>100){
for(nn=totalFiles.length-1;nn>=100;nn--){
toDelete.push(totalFiles[nn]) ;// store the files to delete
}
// Logger.log(toDelete)
for(n=0;n<toDelete.length;++n){
var file = toDelete[n]
DocsList.getFileById(file[2]).setTrashed(true);// move to trash each file that is in the toDelete array
Logger.log(file[0]+' was deleted');// log the file name to create mail message
}
MailApp.sendEmail('myMail@gmail.com', 'Script AUTODELETE report', Logger.getLog());// send yourself a mail
}else{
MailApp.sendEmail('myMail@gmail.com', 'Script AUTODELETE report', 'No file deleted');// send yourself a mail
}
}