我试图想出这个剧本,但没有快乐。
我在某个日期之后使用someones脚本来删除文件,但我想将其修改为只删除任何.bak文件,无论日期如何。这有点好,但我一直收到错误:
“TypeError:在对象驱动器中找不到函数getAllFilesForPaging”
'function DeleteMyJpegs() {
var pageSize = 200;
var files = null;
var token = null;
var i = null;
var ThirtyDaysBeforeNow = new Date().getTime()-3600*1000*24*30 ;// 30 is the number of days
//(3600秒= 1小时,1000毫秒= 1秒,24小时= 1天30天是您想要的持续时间 Logger.clear();
do {
var result = DriveApp.getAllFilesForPaging(pageSize, token);
var files = result.getFiles()
var token = result.getToken();
for(n=0;n<files.length;++n){
if(files[n].getName().toLowerCase().match('.bak')=='.bak' && files[n].getDateCreated().getTime()<ThirtyDaysBeforeNow){
// files[n].setTrashed(true)
Logger.log(files[n].getName()+' created on '+Utilities.formatDate(files[n].getDateCreated(), 'GMT','MMM-dd-yyyy'))
}
}
} while (files.length == pageSize);
MailApp.sendEmail('email@address.co.uk', 'Script AUTODELETE BAK report', Logger.getLog());
}'
答案 0 :(得分:0)
DriveApp中没有getAllFilesForPaging()
方法。这可能是原作者编写的自定义函数。这是使用DriveApp文件迭代器重写它的方法。
function deleteMyBAKs(){
var ThirtyDaysBeforeNow = new Date().getTime()-3600*1000*24*30 ;// 30 is the number of days
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
if(file.getName().toLowerCase().match('.bak')=='.bak' && file.getDateCreated().getTime()<ThirtyDaysBeforeNow){
try{file.setTrashed(true);}
catch(e){Logger.log("Unable to Trash: "+file.getName()) }
Logger.log(file.getName()+' created on '+Utilities.formatDate(file.getDateCreated(), 'GMT','MMM-dd-yyyy'));
}
}
MailApp.sendEmail('email@address.co.uk', 'Script AUTODELETE BAK report', Logger.getLog());
}
您可以在以下位置阅读有关DriveApp和文件迭代器的更多信息:
https://developers.google.com/apps-script/reference/drive/drive-app