【问题标题】:Google Apps Script/ Drive API (Javascript) Remove from Shared With MeGoogle Apps 脚本/ Drive API (Javascript) 从与我共享中删除
【发布时间】:2017-02-25 01:21:49
【问题描述】:

有人对如何从与我共享的文件中删除文件有任何建议吗?我需要在不实际撤消访问权限的情况下执行此操作,因为这些人员是通过联系人组添加的,因此仅删除 1 人是行不通的。

注意事项:

我知道用这个可以找到文件:

var files = DriveApp.searchFiles('sharedWithMe');
//then I set file = what I'm looking for.  

但是,这不会删除与我共享的文件:

DriveApp.removeFile(file);

我也尝试过通过修补元数据来进行暴力破解,但无济于事。 此外,假设与我共享的是一个文件夹是错误的,因为在列出父文件夹时该文件没有返回任何内容。

【问题讨论】:

    标签: javascript google-apps-script google-drive-realtime-api


    【解决方案1】:

    只有 DriveApp 不能完全删除文件。所以有必要使用Drive API。 “removeFile()”用于更改父文件夹信息。它不能删除文件。我准备了 2 个用于删除文件的样本。如果您是该文件的所有者,则可以将其删除。

    将文件移至垃圾箱并清空垃圾箱:

    var file = DriveApp.getFilesByName("filename").next();
    file.setTrashed(true)
    Drive.Files.emptyTrash();
    

    直接删除文件:

    Drive.Files.remove("fileID");
    

    已确认即使其他用户正在使用上述脚本也可以删除文件。

    为了使用上述脚本,需要在https://console.developers.google.com/开发者控制台项目中启用Drive API at Advanced Google Services和Drive API。

    没有父文件夹的文件:

    如果您使用了“removeFile()”,则驱动器中可能存在没有父文件夹的文件。您可以按照脚本确认它们。这可以检索没有父文件夹的文件的文件名和文件ID。

    var result = [];
    var files = DriveApp.getFiles();
    while (files.hasNext()) {
      file = files.next();
      if (!file.getParents().hasNext()) {
        result.push([file, file.getId()]);
      }
    }
    Logger.log(result);
    

    【讨论】:

    • 我不是该文件的所有者,因此无法使用 Drive.Files.remove() 将其删除。我希望从谷歌驱动器的与我共享部分中删除文件,类似于自动右键单击文件并点击删除的功能。我启用了这些 API。
    • 如果您不是该文件的所有者,尽管您无法完全删除它,但您可以使用它从您的云端硬盘中隐藏该文件。 var file = DriveApp.getFilesByName("filename").next(); var folder = file.getParents().next(); folder.removeFile(file); 在这种情况下,您可以在我的回答中使用“没有父文件夹的文件:”脚本来确认。
    • 错误:无法检索下一个对象:迭代器已到达末尾。我认为与我共享的实际上不是父母。
    • 这个link 实际上是我的问题,虽然他们似乎也找不到答案。
    • 脚本运行良好。我可以问你关于错误发生的脚本吗?该脚本从共享文件中删除父文件夹信息。
    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多