首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在尝试将不属于我的文件从共享驱动器复制到个人驱动器

正在尝试将不属于我的文件从共享驱动器复制到个人驱动器
EN

Stack Overflow用户
提问于 2019-07-21 01:55:46
回答 2查看 482关注 0票数 0

我是一名教育工作者,在学校的google drive上有我创建和共同创建的内容。我要离开学校,试着把我创建和共同创建的课程复制一份。学校驱动器中的文件位于主文件夹和子文件夹中,我是其中的所有者,而不是所有者。我们的技术人员说要尝试下面的代码,但我得到了一个错误,并且没有从我的学校进一步支持。

我尝试在google drive应用程序中共享文件,然后通过输入我的文件夹名称来尝试使用下面的代码,但它在代码的第22行给了我一个错误。除了打开每个单独的文件并手动保存之外,我不知道该做什么。我只能在7月26日之前访问共享驱动器。请帮帮我!

代码语言:javascript
复制
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);
  }
}

我期望代码将文件结构和所有所有者的所有文件从共享驱动器复制到我创建的新个人驱动器中。对于我不拥有的文件,我似乎仍然遇到了文件权限问题。我收到以下错误:

代码语言:javascript
复制
Access denied: DriveApp. (line 22, file "Code")
EN

回答 2

Stack Overflow用户

发布于 2019-07-21 08:39:18

我在与我分享的东西上尝试了你的脚本,既有修改权限,也只有只读权限,它工作得很好。

该错误通常是关于驱动器应用程序被禁用(这也会阻止脚本)。请参阅link

但是,由于它适用于你拥有的文件,我猜你不是处于“只读”模式,就是处于“注释”模式。因为它不会阻止你制作副本,但当分享时,所有者可以选中一个复选框,为评论者和读者禁用打印、下载和复制选项。

因此,我认为您唯一的解决方案是要求所有者取消选中该框:/

票数 0
EN

Stack Overflow用户

发布于 2020-07-23 21:47:29

要将文件复制到您的个人存储中,请执行以下操作:

  1. 在你的个人硬盘中创建一个文件夹的快捷方式。
  2. 使用以下代码创建一个新的谷歌协作

你的硬盘:

代码语言:javascript
复制
from google.colab import drive

drive.mount("/content/drive")

  1. 接下来,输入命令:

代码语言:javascript
复制
!cp -rp '/content/drive/JAVA_ANDROID/*' '/content/drive/My Drive'

哪里,

JAVA_ANDROID是文件夹快捷方式的名称,请输入要复制的文件夹的名称,然后追加/*以复制该位置的所有文件。

下一步是要保存复制文件的文件夹的路径,在本例中为/content/drive/My Drive

编辑:我注意到,在某些情况下,添加/*不起作用。因此,如果它不能以上面指定的方式工作。只要不将*附加到快捷方式名称并尝试即可。因此,在这种情况下,上面的命令将是:

代码语言:javascript
复制
!cp -rp '/content/drive/JAVA_ANDROID/' '/content/drive/My Drive'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57127278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档