使用 Apps 脚本将文件从一个文件夹复制到另一个文件夹时,复制的任何“Apps 脚本”文件最终都会出现在 MyDrive 中,而不是指定的文件夹中 - 为什么?

2023-12-15

我使用此 Apps 脚本来制作某些文件的备份副本:

var sourceFolderId = "xxxxxx";
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var latestFiles = sourceFolder.getFiles();
var backupFolderId = "yyyyyy";
var backupFolder = DriveApp.getFolderById(backupFolderId);

while(latestFiles.hasNext()) {
 var file = latestFiles.next();
 file.makeCopy(backupFolder);
}

它工作正常 - 将所有文件从源文件夹复制到备份文件夹 - 但如果复制的任何文件是“Google Apps脚本”文件,它不会将其复制到备份文件夹,而是将其复制到“我的云端硬盘” 。

然后我必须将其从“我的驱动器”移动到所需的文件夹。我可以用脚本来做到这一点,但我无法弄清楚它为什么要这样做。

我是所有文件和文件夹的所有者。

有什么想法吗?

thanks


同样在我的环境中,我也确认了和你一样的情况。仅 Google Apps 脚本无法复制到备份文件夹。我认为这可能是一个错误。所以我想到了针对这种情况的解决方法。我测试的模式如下。

  1. Tried to move the copied GAS files from "My Drive" to the backup folder using addFile() and removeFile().
    • A parent ID of backup folder can be added. But the parent ID of "My Drive" cannot be removed.
      • Failure
  2. Tried to copy GAS files using Drive.Files.copy of Advanced Google Services.
    • The copied GAS files are created to "My Drive". This is the same to makeCopy().
      • Failure
  3. Tried to move the copied GAS files from "My Drive" to the backup folder using Drive.Files.update of Advanced Google Services.
    • The parent ID can be changed from "My Drive" to backup folder.
      • Success

修改后的脚本:

在此修改后的脚本中,Google Apps 脚本文件使用以下命令从“我的云端硬盘”移动到备份文件夹Drive.Files.update.

var sourceFolderId = "xxxxxx";
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var latestFiles = sourceFolder.getFiles();
var backupFolderId = "yyyyyy";
var backupFolder = DriveApp.getFolderById(backupFolderId);

while(latestFiles.hasNext()) {
  var file = latestFiles.next();
  var res = file.makeCopy(backupFolder); // Modified
  if (file.getMimeType() == MimeType.GOOGLE_APPS_SCRIPT) { // Added
    Drive.Files.update({"parents": [{"id": backupFolderId}]}, res.getId()); // Added
  }
}

Note :

为了使用此修改后的脚本,请在高级 Google 服务和 API 控制台中启用 Drive API,如下所示。

在高级 Google 服务中启用 Drive API v2

  • On script editor
    • 资源 -> 高级 Google 服务
    • 启用云端硬盘 API v2

在 API 控制台启用 Drive API

  • On script editor
    • 资源->云平台项目
    • 查看API控制台
    • 在入门中,单击启用 API 并获取密钥等凭据。
    • 在左侧,单击“库”。
    • 在搜索 API 和服务中,输入“Drive”。然后单击驱动器 API。
    • 单击启用按钮。
    • 如果API已经启用,请不要关闭。

参考 :

  • 高级谷歌服务
  • 驱动API

如果我误解了你的问题,我很抱歉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apps 脚本将文件从一个文件夹复制到另一个文件夹时,复制的任何“Apps 脚本”文件最终都会出现在 MyDrive 中,而不是指定的文件夹中 - 为什么? 的相关文章

随机推荐

  • 如何在 lambda 层中本地调试依赖项?

    我正在从 dockerfile 创建一个 lambda 层 它将 python 包安装到一个目录并压缩结果 FROM amazonlinux WORKDIR RUN yum update y Install Python 3 7 RUN y
  • 在字符集之间转换文本文件的最佳方法?

    在字符集之间转换文本文件的最快 最简单的工具或方法是什么 具体来说 我需要从 UTF 8 转换为 ISO 8859 15 反之亦然 一切顺利 用您最喜欢的脚本语言 命令行工具或操作系统 网站等的其他实用程序编写单行代码 迄今为止最好的解决方
  • 有没有办法在单个 npmrc 文件中配置多个注册表

    这是我的问题 我们有一个私人 NPM 注册表 仅适用于 VPN 我想要一个后备注册表https registry npmjs org这样当我退出 VPN 时 它就能无缝运行 P S 目前我正在使用npmrc这在之间的切换方面做得很好 npm
  • 如何将SDL2纹理渲染到GTK3+窗口中?

    我正在创建一个音乐播放器并尝试使用 GTK3 来创建用户界面 我正在使用 SDL CreateWindowFrom 函数让 SDL2 使用 GTK3 窗口而不是创建一个窗口 但无法弄清楚将 SDL2 纹理渲染到 GTK3 窗口中需要遵循的步
  • iOS 9 Facebook 登录模拟器 -canOpenURL:URL 失败:“fbauth2:///” - 错误:“(null)”

    我已更新到 Xcode 7 和最新的 iOS SDK 我已在应用程序的 plist 中添加了适当的条目 我的应用程序的 Facebook 登录在设备上运行良好 然而 在 iOS 9 模拟器上 我得到 canOpenURL failed fo
  • Android:如何使用JobService的JobFinished

    我没有看到使用 JobService 的 jobFinshed 的示例 似乎我们必须在满足某些条件时跟踪更改 我们必须调用jobFinished 方法 我说得对吗 打电话的难度jobFinished 来自另一个班级 例如IntentServ
  • 在画布上绘制图像

    我正在尝试将图像放在画布上 我阅读了以下教程https developer mozilla org en US docs Web Guide HTML Canvas tutorial Using images并尝试做类似的事情 我的画布是
  • 如何从循环中获取 tkinter 条目

    我想制作一个带有多个 tkinter Entry 小部件的程序 我使用 for 循环来制作多个 Entry 小部件 但我怎样才能从中获得价值呢 我的测试代码 from tkinter import root Tk variables ent
  • 设置状态栏色调颜色

    我有一个选项卡式栏应用程序 状态栏色调颜色设置为默认 因此在整个应用程序中它始终是我选择的蓝色 然而 在一种视图中 我隐藏了导航栏 如下所示 self navigationController setNavigationBarHidden
  • 在 mongodb C++ 驱动程序中使用声明“未找到”

    我使用基于 mongo c driver 1 6 2 的 mongo cxx driver r3 1 1 使用github 上提供的最新示例 我设法找到了如何连接数据库以及如何保存文档 我正在努力使用过滤器按照中提供的信息获取结果mongo
  • 有没有办法在等待输入时有一个倒计时器?

    我正在尝试创建一个简单的游戏 在计时器用完之前需要用户输入 基本上 页面会加载一段时间 并等待用户说出正确答案 如果时间用完 游戏就结束 但如果用户答对了 他就会继续下一个问题 我已经解决了演讲部分 我只需要弄清楚计时器 有没有一种简单的方
  • 为什么 img 标签接受 margin-top 属性?

    我想知道为什么img标签接受边距顶部属性吗 这不是内联标签吗 内联标签不接受顶部和底部边距 这是因为 img 是内联的replaced元素并且它确实接受margin top 它的行为与内联不同不可更换元素 如span例如 规范的相关部分详细
  • twitter bootstrap 自定义轮播指示器

    我想用这样的东西改变轮播指示器 我的轮播指示器有这样的标记 ol class carousel indicators li class active h4 IMAGE1 h4 br h5 subtitle h5 br span span l
  • Swift popToRoot 不工作

    这个突出显示的行是 popToRoot 应该继续进行的地方 成功注册后 它应该重定向到根视图控制器 由于某种原因 它对我不起作用 实际上什么也没有发生 甚至没有错误 我尝试过 self navigationController popToR
  • 使用 Web 服务的 HTTP POST

    我一直在谷歌上进行一些搜索 但在这个主题上只取得了部分成功 我想知道是否有人可以建议一个使用 C 执行 HTTP POST 将 XML 发送到 HTTP 服务的示例 我有一个 asmx Web 服务 可以从数据库中提取数据 并将该数据保存到
  • C#中有什么东西可以用作数据库触发器

    我的 ERP 数据库 A 只有读取权限 我无法在表上创建触发器 A是为ERP系统制作的 对我来说是未知程序 我有另一个数据库 B 它是我的应用程序专用的 该应用程序在两个数据库上工作 我想立即将 A 的更改 对于任何插入 更新 删除 反映给
  • 如何将一个简单的div直接覆盖在一个简单的html表格td之上?

    我有一个简单的 html 表 其中每个 tr 有一个用于标签的 td 和一个用于内容的 td 我正在寻找最正确 最有效的方法来在 内容 td 的顶部绘制一个 div 从而使标签可见 如果可能的话 计划是让第二个 td 被覆盖层 隐藏 如果有
  • 滚动 100px 后将 div 位置设置为固定?

    我尝试使用以下函数 以便在滚动 100 px 后将 div 的位置设置为距离顶部 100 px div class header style background color red something div 它不起作用 div 坚持其
  • 使用 HTTParty 检索 JSON 时出现“嵌套太深”错误

    我正在为 reddit api 编写一个非常简单的代理包装器 这样我就可以发出跨域 JSONP 请求 据我所知 reddit 不允许 JSONP 调用 我正在使用 HTTParty gem 发出调用并检索响应 我立即将其渲染为 json 到
  • 使用 Apps 脚本将文件从一个文件夹复制到另一个文件夹时,复制的任何“Apps 脚本”文件最终都会出现在 MyDrive 中,而不是指定的文件夹中 - 为什么?

    我使用此 Apps 脚本来制作某些文件的备份副本 var sourceFolderId xxxxxx var sourceFolder DriveApp getFolderById sourceFolderId var latestFile