应用程序脚本谷歌驱动器自动删除编辑器

时间:2017-09-03 12:46:41

标签: google-apps-script

我正在将Google云端硬盘中的文件夹/文件共享为“A”。

但现在我正试图停止分享'A'。

我尝试停止使用应用脚本共享所有文件夹/文件,但应用脚本无法执行超过5分钟。

apps脚本有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

你是否超过了5分钟,因为你正在迭代很多的文件?

顺便说一下,使用高级API来更快地执行此操作可能更好(这来自我的个人经验,它可能不是真的,但避免FileIterators往往会加快速度向上)。此外,如果您使用DriveApp.getFiles()进行迭代而不是直接搜索正确的文件,那么您将迭代驱动器中的所有文件,这需要花费很多时间。

使用高级API,您只能迭代用户A可以修改/读取的文件(即使您达到5分钟,如果再次运行该功能,您已经拥有的文件/文件夹修改将不会被查询考虑在内。

可以通过(假设:用户A拥有邮件地址a.mail@gmail.com)获取文件列表:

var files = Drive.Files.list({
  q: '"a.mail@gmail.com" in readers or "a.mail@gmail.com" in writers'
});


files.items.forEach(file => {
  var file_app = DriveApp.getFileById(file.id);
  // Do here what you need to stop sharing. 
});

列表获取文件和文件夹。您可以使用属性file.mimeType进行检查(文件夹为application/vnd.google-apps.folder,文件为实际mimetype,如PDF格式为application/pdf

免责声明:您必须在AppScript和Google控制台中启用高级API。这很简单,只需仔细阅读the instructions

测试:我针对与我的一位同事共享的文件测试了此解决方案。我们在共享文件夹中有超过10000个文件,我成功迭代所有文件而没有达到限制。 DriveApp回调达到了极限。但同样,这是个人测试,谨慎对待。