Google apps script 使用应用程序脚本将文件从一个文件夹复制到另一个文件夹时,任何;应用程序脚本“;被复制的文件最终会出现在MyDrive中,而不是指定的文件夹中-为什么?
我使用此应用程序脚本制作一些文件的备份副本:Google apps script 使用应用程序脚本将文件从一个文件夹复制到另一个文件夹时,任何;应用程序脚本“;被复制的文件最终会出现在MyDrive中,而不是指定的文件夹中-为什么?,google-apps-script,file-copying,Google Apps Script,File Copying,我使用此应用程序脚本制作一些文件的备份副本: var sourceFolderId = "xxxxxx"; var sourceFolder = DriveApp.getFolderById(sourceFolderId); var latestFiles = sourceFolder.getFiles(); var backupFolderId = "yyyyyy"; var backupFolder = DriveApp.getFolderById(backupFolderId); whi
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脚本无法复制到备份文件夹。我认为这可能是一个错误。所以我想到了解决这种情况的办法。我测试的模式如下
addFile()
和removeFile()
将复制的GAS文件从“我的驱动器”移动到备份文件夹。
- 可以添加备份文件夹的父ID。但无法删除“我的驱动器”的父ID。
- 失败
Drive.files.copy
复制GAS文件。
- 复制的GAS文件将创建到“我的驱动器”。这与
相同。makeCopy()
- 失败
Drive.files.update
将复制的GAS文件从“我的驱动器”移动到备份文件夹。
- 父ID可以从“我的驱动器”更改为备份文件夹。
- 成功
Drive.files.update
将Google 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();
var res = file.makeCopy(backupFolder); // Modified
if (file.getMimeType() == MimeType.GOOGLE_APPS_SCRIPT) { // Added
Drive.Files.update({"parents": [{"id": backupFolderId}]}, res.getId()); // Added
}
}
注:
为了使用这个修改过的脚本,请在高级Google服务和API控制台上启用驱动API,如下所示
在高级Google服务中启用驱动器API v2
- 关于脚本编辑器
- 资源->高级谷歌服务
- 打开驱动器API v2
- 关于脚本编辑器
- 资源->云平台项目
- 查看API控制台
- 开始时,单击启用API并获取密钥等凭据
- 在左侧,单击“库”
- 在搜索API和服务时,输入“驱动器”。然后单击驱动API
- 单击启用按钮
- 如果API已经启用,请不要关闭
如果我误解了你的问题,我很抱歉。嗨。这是一个很好的解决办法。我使用的是遍历所有MyDrive文件并使用.addFile和.removeFile,但您的文件更整洁。我很高兴这不仅仅是我一个人——大概是一个bug。@pea先生,我可以从你的问题中了解到这种情况。谢谢。对于使用此更新方法在团队驱动文件夹中创建google文档文件,您有什么建议吗?我已经在API浏览器中尝试过了,但我不知道如何在GoogleApps脚本中实现语法。