如何编写Google表格脚本以自动删除不属于我的文件

问题描述 投票:0回答:1

我有一个表格,我们公司的用户保存到我们公司的谷歌驱动器文件夹(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用户有文件时却不行。

解?

google-apps-script google-sheets google-drive-sdk delete-file
1个回答
0
投票

你是对的,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

© www.soinside.com 2019 - 2024. All rights reserved.