我是一名教育工作者,在学校的google drive上有我创建和共同创建的内容。我要离开学校,试着把我创建和共同创建的课程复制一份。学校驱动器中的文件位于主文件夹和子文件夹中,我是其中的所有者,而不是所有者。我们的技术人员说要尝试下面的代码,但我得到了一个错误,并且没有从我的学校进一步支持。
我尝试在google drive应用程序中共享文件,然后通过输入我的文件夹名称来尝试使用下面的代码,但它在代码的第22行给了我一个错误。除了打开每个单独的文件并手动保存之外,我不知道该做什么。我只能在7月26日之前访问共享驱动器。请帮帮我!
function duplicate() {
var sourceFolder = "5-8 Shared Humanities";
var targetFolder = "Copy of humanities curriculum from FSMN";
var source = DriveApp.getFoldersByName(sourceFolder);
var target = DriveApp.createFolder(targetFolder);
if (source.hasNext()) {
copyFolder(source.next(), target);
}
}
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
while(files.hasNext()) {
var file = files.next();
file.makeCopy(file.getName(), target);
}
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);
}
}我期望代码将文件结构和所有所有者的所有文件从共享驱动器复制到我创建的新个人驱动器中。对于我不拥有的文件,我似乎仍然遇到了文件权限问题。我收到以下错误:
Access denied: DriveApp. (line 22, file "Code")发布于 2019-07-21 08:39:18
我在与我分享的东西上尝试了你的脚本,既有修改权限,也只有只读权限,它工作得很好。
该错误通常是关于驱动器应用程序被禁用(这也会阻止脚本)。请参阅link
但是,由于它适用于你拥有的文件,我猜你不是处于“只读”模式,就是处于“注释”模式。因为它不会阻止你制作副本,但当分享时,所有者可以选中一个复选框,为评论者和读者禁用打印、下载和复制选项。
因此,我认为您唯一的解决方案是要求所有者取消选中该框:/
发布于 2020-07-23 21:47:29
要将文件复制到您的个人存储中,请执行以下操作:
你的硬盘:
from google.colab import drive
drive.mount("/content/drive")!cp -rp '/content/drive/JAVA_ANDROID/*' '/content/drive/My Drive'哪里,
JAVA_ANDROID是文件夹快捷方式的名称,请输入要复制的文件夹的名称,然后追加/*以复制该位置的所有文件。
下一步是要保存复制文件的文件夹的路径,在本例中为/content/drive/My Drive。
编辑:我注意到,在某些情况下,添加/*不起作用。因此,如果它不能以上面指定的方式工作。只要不将*附加到快捷方式名称并尝试即可。因此,在这种情况下,上面的命令将是:
!cp -rp '/content/drive/JAVA_ANDROID/' '/content/drive/My Drive'https://stackoverflow.com/questions/57127278
复制相似问题