我在我的Google驱动器中共享文件夹/文件到'A'。应用脚本谷歌驱动器自动删除编辑器
但现在我试图停止共享'A'。
我试图停止使用应用程序脚本共享所有文件夹/文件,但应用程序脚本无法执行超过5分钟。
应用程序脚本有没有更好的解决方案?
我在我的Google驱动器中共享文件夹/文件到'A'。应用脚本谷歌驱动器自动删除编辑器
但现在我试图停止共享'A'。
我试图停止使用应用程序脚本共享所有文件夹/文件,但应用程序脚本无法执行超过5分钟。
应用程序脚本有没有更好的解决方案?
你是否超过了5分钟,因为你正在迭代很多文件?顺便说一句,可能最好是使用高级API来更快地执行此操作(这是来自我的个人经验,它可能不是真实的,但避免FileIterators往往会加快速度)。另外,如果您正在使用DriveApp.getFiles()
而不是通过直接搜索正确的代码进行迭代,那么您正在遍历驱动器中的所有文件,并且需要很多。
使用高级API,您只能遍历用户A
可以修改/读取的文件(即使达到5分钟,如果再次运行该功能,您已经修改的文件/文件夹将会是没有考虑到查询)。
文件列表可以通过获得(假设:用户A
具有邮件地址[email protected]
):
var files = Drive.Files.list({
q: '"[email protected]" in readers or "[email protected]" 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
,文件的实际MIME类型,如PDF文件的application/pdf
)来检查此问题。
免责声明:你必须使两个AppScript和谷歌控制台的高级API。这很容易,只需仔细阅读the instructions。
测试:我测试了这个解决方案与我的一位同事共享的文件。我们在拥有超过10000个文件的共享文件夹中,并且我成功地遍历所有文件而没有达到极限。 DriveApp
回调达到极限。但是,再次,这是个人测试,谨慎对待。
真的非常感谢您的回答。我还有1个问题。执行时间仅为5分钟“应用程序脚本”执行时间吗? 还是“连接到谷歌服务的时间”? – Nocome
我认为两者的总和... –
通过DriveApp.searchFiles(searchParams)获取文件的FileIterator之后,您可以使用我在此处描述的解决方案击败5分钟的执行配额https://stackoverflow.com/questions/45985025/optimizing-google-sheets -appendrow/45987178#45987178 –