我有一个表格,我们公司的用户保存到我们公司的谷歌驱动器文件夹(G套件)。我们需要将这些表格保留30天。
我想在35天后自动删除这些文件。所以我写了这个脚本:
function DeleteOldFiles() {
var Folders = new Array(
'0B8xnkPYxGFbUMktOWm14TVA3Yjg',
'1C_VUaqPl9FQlaajY_wsZzJgVGHDrPKm8');
var Files;
Logger.clear();
for each (var FolderID in Folders) {
Folder = DriveApp.getFolderById(FolderID)
Files = Folder.getFiles();
while (Files.hasNext()) {
var File = Files.next();
if (new Date() - File.getLastUpdated() > 35 * 24 * 60 * 60 * 1000) {
File.setTrashed(true); // Places the file int the Trash folder
// Drive.Files.remove(File.getId()); // Permanently deletes the file
Logger.log('File ' + File.getName() + ' was deleted.');
}}}
if(Logger.getLog() != '')
MailApp.sendEmail('[email protected]', 'Backups have been removed from Google Drive', Logger.getLog());}
问题是,我有时会收到这些消息:“访问被拒绝:DriveApp。(第18行,文件”代码“)”
有时脚本有效,有时则不行。我终于得出结论,它可能仅在删除我自己的文件时有效,但在另一个G Suite用户有文件时却不行。
解?
你是对的,only the owner may validly use the .setTrashed功能。您可以尝试使用.setOwner(email address)首先将自己设置为所有者:
if (new Date() - File.getLastUpdated() > 35 * 24 * 60 * 60 * 1000) {
File.setOwner('your email address'); // Transfers ownership to user
File.setTrashed(true); // Places the file int the Trash folder
// Drive.Files.remove(File.getId()); // Permanently deletes the file
Logger.log('File ' + File.getName() + ' was deleted.');
}}}
如果这不起作用 - 它需要域管理员权限,我相信 - 你也可以尝试创建一个存档文件夹作为一种解决方法,只需将文件移动到那里,如下所示:stackoverflow.com/questions/38808875/moving-files-in-google-drive-using-google-script。