使用文件名将文件一个文件夹复制到 Google 云端硬盘中的另一个文件夹

2024-05-06

我的谷歌云端硬盘帐户中有两个文件夹。 “文件夹 1”和“文件夹 2”。 “文件夹1”内有多个文件。假设有一个文件名Test.txt我想复制Test.txt使用 Driveapp 将文件保存到“文件夹 2”。我找到了代码,但它仅适用于“文件唯一 ID”,我们是否可以仅通过文件名来制作它?

function copyfile() {

var file = DriveApp.getFileById("1pkwQ9te-EtpqC_NC3BoHzOTUoC7axZDcAfxrqMgslwg");

var source_folder = DriveApp.getFolderById("0B8_ub-Gf21e-fkxjSUwtczJGb3picl9LUVVPbnV6Vy1aRFRWc21IVjRkRjBPTV9xMWJLRFU")

var dest_folder = DriveApp.getFolderById("0B8_ub-Gf21e-flJ4VmxvaWxmM2NpZHFyWWxRejE5Y09CRWdIZDhDQzBmU2JnZnhyMTU2ZHM")
// Make a backup copy.

var file2 = file.makeCopy('BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + file.getName());
dest_folder.addFile(file2);

source_folder.removeFile(file2);
  }

如果我使用文件名而不是文件唯一 ID,则会出现错误:

“类型错误:无法在对象 FileIterator 中找到函数 makeCopy。”


  • 您想要复制文件名为Test.txt通过更改文件名将源文件夹移动到目标文件夹。
  • 您想要使用文件名复制文件。
  • 您希望使用 Google Apps 脚本来实现此目的。

如果我的理解是正确的,那么这个修改怎么样?

修改要点:

  • In order to retrieve the file using the filename, please use the method of getFilesByName(). In this case, "FileIterator" is returned, because the files of same filename can be existing at Google Drive.
    • 当文件名用于getFileById(fileId),发生错误。
    • 使用此,为了检索特定文件夹中的文件,请修改为source_folder.getFilesByName(filename).
  • 复制文件时,可以使用以下方法makeCopy(名称,目的地) https://developers.google.com/apps-script/reference/drive/file#makecopyname,-destination。这样就可以直接将文件复制到目标文件夹中。

当你的脚本被修改后,它会变成如下所示。

模式一:

在此模式中,使用文件夹 ID。

修改后的脚本:

function copyfile() {
  var filename = "Test.txt";
  var sourceFolderId = "0B8_ub-Gf21e-fkxjSUwtczJGb3picl9LUVVPbnV6Vy1aRFRWc21IVjRkRjBPTV9xMWJLRFU";
  var destinationFolderId = "0B8_ub-Gf21e-flJ4VmxvaWxmM2NpZHFyWWxRejE5Y09CRWdIZDhDQzBmU2JnZnhyMTU2ZHM";
  var source_folder = DriveApp.getFolderById(sourceFolderId);
  var file = source_folder.getFilesByName(filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFolderById(destinationFolderId);
    var srcFile = file.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}
  • 运行脚本时,如果存在文件名为Test.txt在源文件夹中,文件被复制到目标文件夹。

模式2:

在此模式中,使用文件夹名称。

修改后的脚本:

function copyfile() {
  var filename = "Test.txt";
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var file = source_folder.getFilesByName(filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
    var srcFile = file.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}
  • 在这种情况下,假设文件夹Folder 1 and Folder 2存在于 Google 云端硬盘中。

参考:

  • 获取文件名(名称) https://developers.google.com/apps-script/reference/drive/drive-app#getfilesbynamename
  • 类 FileIterator https://developers.google.com/apps-script/reference/drive/file-iterator.html
  • makeCopy(名称,目的地) https://developers.google.com/apps-script/reference/drive/file#makecopyname,-destination
  • 获取文件夹按名称(名称) https://developers.google.com/apps-script/reference/drive/drive-app#getFoldersByName(String)
  • 类 文件夹迭代器 https://developers.google.com/apps-script/reference/drive/folder-iterator.html

如果我误解了你的问题并且这不是你想要的方向,我深表歉意。

Edit:

  • 您要复制文件夹中的“Test.txt”和“Test2.txt”两个文件Folder 1.

对于这种情况,下面的脚本怎么样?

示例脚本1:

function copyfile() {
  var filenames = ["Test.txt", "Test2.txt"];
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  for (var i = 0; i < filenames.length; i++) {
    var filename = filenames[i];
    var file = source_folder.getFilesByName(filename);
    if (file.hasNext()) {
      var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
      var srcFile = file.next();
      var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
      srcFile.makeCopy(newName, dest_folder);
    }
  }
}
  • 如果要添加文件名,请将它们添加到数组中filenames.

示例脚本2:

如果要复制文件夹中的所有文件Folder 1到文件夹Folder 2,您可以使用以下脚本。

function copyfile() {
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var files = source_folder.getFiles();
  var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
  while (files.hasNext()) {
    var srcFile = files.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用文件名将文件一个文件夹复制到 Google 云端硬盘中的另一个文件夹 的相关文章

  • 如何在as3中不询问的情况下写入外部文件

    我有这个代码 var fileRef FileReference new FileReference fileRef save ciao coso lingua txt 在现有的 lingua txt 文件上写入 该脚本有效 但每次他保存时
  • 如何在 Android 上设置 Google Drive API?

    我一直在尝试将 Google Drive 功能集成到我的应用程序中 但我无法使用任何内置功能 因此我相信我要么错过了一个步骤 要么做得不正确 我正在遵循官方的 Google 开发者指南 https developers google com
  • 如何在 Android '/data/data/pkg/files' 目录中创建文件层次结构?

    我尝试在 Android 的 data data pkg files 目录中创建 foo bar txt 这似乎是文档中的矛盾 要写入文件 请使用名称和路径调用 Context openFileOutput http developer a
  • BigQuery REGEXP_MATCH 和重音:边界通配符失败?

    在 GAS 中 我可以正确地将重音符号与具有边界字符的正则表达式相匹配 例如 b b 仅当字符 是单独的单词时才匹配 这在 GAS 中有效 function test regExp var str la s ance est Paris v
  • Drive.Permissions.insert(值)-Drive API,您可以在“值”下使用数组吗?

    是否可以在此处使用 值 下的数组来阻止我创建组别名电子邮件地址 例如 userValues email protected cdn cgi l email protection email protected cdn cgi l email
  • 从通知中打开文件

    我从服务器下载一个文件 对于此操作 我显示了进度不确定的通知 下载文件后 我想通过单击通知来打开它 我获得了扩展名并尝试使用以下命令打开它intent像这样 public static Intent openFile Context con
  • 使用应用程序脚本将 MS Word 文件(保存在云端硬盘中)转换为 Google 文档

    我被某些事情困住了 找不到解决办法 有没有办法使用文件 url 或 id 将存储在 Google Drive 中的 MS Word 文件转换为 Google 文档 我目前有一个电子表格 其中包含文件的网址 或者 也可以使用 python 脚
  • 谷歌电子表格中的“MMMM yy”日期

    我有一个谷歌电子表格 其中我想要一个仅包含月份和年份名称的日期 例如September 2011 而且我还希望月份和年份能够轻松更改 有没有办法获得自定义日期格式来做到这一点 我发现我可以这样做 TEXT 40295 MMMM yy 但是日
  • 如何正确导入主代码和模块中同时使用的模块?

    假设我有一个主脚本 main py 它导入另一个 python 文件import coolfunctions另一个 import chores 现在 假设 Coolfunctions 也使用家务活中的东西 因此我声明import chore
  • PHP:是否可以从文件内容(字符串)创建 SplFileObject 对象?

    例如 contents file get contents image png 是否可以从 contents 创建 SplFileObject 对象 Thanks php 有一些特殊的流包装器 http www php net manual
  • 使用 Promise 对 Google 表格进行多次查询

    我是一名初学者编码器 需要一些帮助来加快我的 Google 表格查询速度 我环顾四周 找不到解决方案 我正在尝试快速对 Google 表格运行 25 个查询 这就是我的尝试方式 对 Google 工作表运行查询 将结果推送到数组 运行不同的
  • C++:获取器和设置器?

    我正在尝试编写一些代码来为以下数据的 ID 号 名字 姓氏 期中成绩和期末成绩创建 getter 和 setter 这些数据位于我正在编写的班级的文本文件中 10601 ANDRES HYUN 88 91 94 94 89 84 94 84
  • 是否可以从外部文件运行 openoffice 宏?

    我想从外部文件运行 OpenOffice 宏 喜欢 vlad leo soffice macro home vlad q vbs 并不是真正的答案 只是一个评论 以便提出这个问题 并希望得到答案 这可能与必须显式设置宏的权限有关 例如 编辑
  • 从文本文件 PHP 读取数据

    我只是想知道如何在 php 中读取文本文件 我想让它显示文本文件中的最后 200 个条目 每个条目都在一个新行上 Like John White Jane Does John Does Someones Name 等等 Thanks Use
  • 上传时的 Google Drive API——这些额外的空行从何而来?

    总结一下该程序 我从我的 Google 云端硬盘下载一个文件 然后在本地计算机中打开并读取一个文件 file a txt 然后在我的计算机中打开另一个文件 file b txt 处于附加模式 并且在使用这个新的 file b 更新我的 Go
  • 什么是云端硬盘发起的授权?

    The 关于授权 页面 https developers google com drive about authGoogle Drive 的 SDK 文档中有一个标题为 Drive initerated Authorization 的部分
  • 如何在 Google 文档之间复制内容和格式?

    我需要复制 Google 文档的内容 并将其附加到另一个文档 如果我使用这样的东西 newDoc getBody appendParagraph template getText 我得到了文本 但丢失了原始文件中的格式 Bold Itali
  • 自动递增 ID 号 Google Apps 脚本

    我想在向工作表添加新值时自动增加 ID 我尝试从当前的 ID 列表创建一个列表 但它只计数到 5 因此当自动递增时 它只会到达一个点并为每个输入保存该数字 以下是我尝试获取 ID 号列表的方法 但它没有获取整个列表 我缺少什么 var ss
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步

随机推荐

  • Web 本地应用程序 Apache:运行 shell 脚本

    我开发了一个 shell 脚本 我想用它创建一个 UI 我决定使用带有本地服务器的 Web 界面 因为我对 HTML PHP 的了解很少 比 QT 或 Java 的了解更多 我只是希望我的 html 可以在我的计算机上运行 shell 脚本
  • 如何使用文本框在数据网格视图中搜索数据?

    这是我当前的代码 private void searchTextBox TextChanged object sender EventArgs e dataGridView1 DataSource as DataTable DefaultV
  • Chrome DevTools 中的渲染去了哪里?

    看起来渲染设置不再是原来的位置 即启用绘画闪烁 显示图层边框 显示 FPS 仪表 显示滚动性能问题 我怎样才能再次访问这些功能 渲染设置已移动铬48 您现在可以通过三点菜单图标 更多工具 渲染设置来访问它们 或者 您可以通过底部窗格的新菜单
  • 用宏包装函数(无需重命名)C

    我有兴趣通过包装现有函数调用来添加一些额外的逻辑without重命名它们 仅供测试 我发现的现有解决方案依赖于将函数包装在不同名称的宏中 这可能意味着更改大量代码 有什么建议么 请注意 我知道LD PRELOAD 但我有兴趣使用宏来检查传递
  • Vuetify 默认轮播 CSS 选择器,用于减少过渡持续时间

    I need a transition that does not produce the dreaded image blinking for a v carousel item Ideally it s a smooth and qui
  • 使用通用元组函数一次进行多次折叠

    如何编写一个接受类型函数元组的函数ai gt b gt ai并返回一个函数 该函数接受类型元素的元组ai 类型的一个元素b 并将每个元素组合成一个新的元组ai 那是签名应该是这样的 f a1 gt b gt a1 a2 gt b gt a2
  • 我要疯了吗? jQuery .click() 似乎不起作用

    下面的代码不适用于任何浏览器 它应该显示一个警报框 我究竟做错了什么 a href test a 将其放入 document ready 中
  • 获取所有按钮标签类型

    有没有办法使用 javascript 获取特定页面上的所有按钮标签及其类型 将此代码放在文档的加载事件中或 HTML 的底部 var buttons document getElementsByTagName button for let
  • 搜索并替换字符串 t-SQL

    每个人我都试图编写一个查询来替换末尾出现的所有字符串 我有一些干扰词 确切地说是 104 个 如果它们出现在字符串末尾 则需要将其从字符串中删除 例如 两个干扰词是 Company LLC 以下是一些示例和预期输出 American Com
  • JS 按特定排序顺序排序

    我需要按特定顺序对数据进行排序 如下所示 const sortBy b a c e d const data a d e 我知道如何按升序 降序排序 console log data sort a b gt a gt b a d e con
  • 以静默方式安装应用程序,并授予 INSTALL_PACKAGES 权限

    我正在尝试将 apk 静默安装到系统中 我的应用程序位于 system app 并成功授予权限 android permission INSTALL PACKAGES 但是我在任何地方都找不到如何使用此权限 我尝试将文件复制到 data a
  • UITextView 格线背景但行高错误

    我有一个 UITextView 用户可以在其中创建注释并保存到 plist 文件中 我希望能够像普通笔记本一样显示线条 我遇到的问题是 文本无法正确对齐 下图很好地解释了这个问题 This is the background I use t
  • Google 脚本图表默认排除标题

    使用以下脚本 function chartCreation var ss SpreadsheetApp getActive var sheet ss getSheetByName Sheet1 var chart sheet newChar
  • IBM.EntityFrameworkCore - 未调用 DbContext.OnConfiguring 和 DbContext.OnModelCreating

    一旦我解决了一期 https stackoverflow com questions 45782871 net standard 2 0 entityframeworkcore db2 ibm entityframeworkcore iss
  • Google Apps 脚本无法从托管的 GAS 转换为特定的云项目

    我有一个 GAS 管理的项目 我想将其转换为特定的谷歌标准云项目 我有身份证 我将其输入到资源 云托管项目中 然后得到 项目不存在 或者您需要对其进行编辑访问 它确实存在 并且我拥有权限 因为我是所有者 该错误有些误导性 我花了一段时间才弄
  • 通过相同的 Makefile 生成 Makefile 的包含文件

    在我的程序中 我有一个有点复杂的构建过程 目前 在我使用的一个目录中include in Makefile am对于一个文件 该文件不存在 但必须自行构建 原因是这个包含文件相当长 此外 在实际程序中 它不仅仅是一个文件 而是多个文件 并且
  • JBoss 7.2 版本使用什么日志记录?

    java 中可以使用多种日志记录变体 最流行的是 log4j 和 JDK 日志记录 我想知道 JBoss Application Server 7 2 版本默认使用什么日志记录 通过查看模块或配置文件很难找到所使用的记录器 如果有人可以在这
  • 在什么情况下会在快速测试中使用expectationForNotification

    我有点困惑什么 什么时候做expectationForNotification as opposed to期望与描述 我无法在 swift 中找到任何明确的示例来说明您何时以及如何处理此调用 我假设它可能是为了测试通知 但看起来它可能只是整
  • 文件 ReadAllLines 将外语变成乱码 (�)

    我正在创建一个工具来替换文本文件中的某些文本 我的问题是 File ReadAllLines 将希伯来字符变成乱码 奇怪的问号 有谁知道为什么会发生这种情况 请注意 我在游戏等中确实遇到希伯来语问题 在记事本中 我无法保存希伯来语文档 我可
  • 使用文件名将文件一个文件夹复制到 Google 云端硬盘中的另一个文件夹

    我的谷歌云端硬盘帐户中有两个文件夹 文件夹 1 和 文件夹 2 文件夹1 内有多个文件 假设有一个文件名Test txt我想复制Test txt使用 Driveapp 将文件保存到 文件夹 2 我找到了代码 但它仅适用于 文件唯一 ID 我