自动从 Google 共享驱动器中删除超过 X 天的文件?
Posted
技术标签:
【中文标题】自动从 Google 共享驱动器中删除超过 X 天的文件?【英文标题】:Automatically Delete Files from Google Shared Drive Older than X days? 【发布时间】:2021-06-30 17:43:13 【问题描述】:我正在尝试删除特定团队云端硬盘(而不是整个 Google 云端硬盘)中超过 10 天的文件和文件夹。
为了做到这一点,我尝试合并我 read here
我尝试在 Google 应用脚本 上运行以下脚本。运行脚本时出现此错误
Syntax error: SyntaxError: Unexpected identifier line: 10 file: Code.gs
我被“getFolderById”函数卡住了。这就是第 10 行中的内容。
function deleteOldFiles()
var Folders = new Array(
'YOUR-TEAM-DRIVE-ID' //you can find this in the team drive url
);
var DaysRetentionNumber = 15; //how many days old your files and folders must be before getting deleted?
var RetentionPeriod = DaysRetentionNumber * 24 * 60 * 60 * 1000;
Logger.clear();
for each (var FolderID in Folders)
folder = DriveApp.getFolderById(FolderID);
processFolder(folder);
function processFolder(folder)
Logger.log('Folder: ' + folder.getName());
var files = folder.getFiles();
while (files.hasNext())
var file = files.next();
Logger.log('File: ' + file.getName());
if (new Date() - file.getLastUpdated() > RetentionPeriod)
//file.setTrashed(true); //uncomment this line to put them in the trash
//Drive.Files.remove(file.getId()); //uncomment this line to delete them immediately; CAREFUL!
Logger.log('File '+ file.getName() + ' trashed');
var subfolders = folder.getFolders();
while (subfolders.hasNext())
subfolder = subfolders.next();
processFolder(subfolder);
checkEmptyFolder(folder);
function checkEmptyFolder(folder)
if(!folder.getFiles().hasNext() && !folder.getFolders().hasNext())
Logger.log('Empty folder: '+ folder.getName());
folder.setTrashed(true); // put them in the trash
if(Logger.getLog() != '')
MailApp.sendEmail('youremailaddresshere', 'Team Drive weekly cleanup report', Logger.getLog()); //get a log in your email so that you can see what will be deleted; try this before uncommenting the trash/delete lines!
如何修改此脚本以删除所有超过 10 天的团队驱动器文件?
我试过this one too。但对 Google 团队驱动器没有任何效果
【问题讨论】:
尝试执行 file.list 以确保您甚至可以访问您可能无法访问的文件夹 它是一个共享驱动器。是的,我可以访问该文件夹。Syntax error: SyntaxError: Unexpected identifier line: 11 file: Code.gs
这是我在保存代码时遇到的错误
for each 在 es6 中没有使用
【参考方案1】:
function delFilesInFolderOlderThanXday()
const folder=DriveApp.getFolderById('id');
const files=folder.getFiles();
const dt=new Date();
const threshold=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()-X).valueOf();
while(files.hasNext())
let file=files.next();
let dtv=new Date(file.getLastUpdated()).valueOf();
if(dtv<threshold)
Drive.Files.remove(file.getId(),supportsAllDrives:true);
如果您想删除,您必须启用 Drive API。否则,您可以使用 DriveApp 将它们放入垃圾箱。您还必须设置 X。
【讨论】:
以上是关于自动从 Google 共享驱动器中删除超过 X 天的文件?的主要内容,如果未能解决你的问题,请参考以下文章
C# 从 Google 共享驱动器 API v.3 中删除文件