【发布时间】:2020-02-21 00:17:09
【问题描述】:
背景: 问题的核心是我有一项 Alteryx 工作将文件放入我的谷歌驱动器。实际上,这些文件需要在 Team Drive 文件夹中。尽我所能,我没有找到让 Alteryx 做到这一点的方法。所以需要这个脚本。
实际问题: 所以这里是标准:我创建的文件使用相同的命名约定,只有日期发生变化。我需要将这些文件从我的驱动器转移到最终处理它们的团队驱动器。 使用堆栈上已有的资源,我在这里找到了很好的解决方案:1 和这里 2,我能够拼凑出一个工作脚本。
了解我是一个用于数据分析的功能稍差的 Python 程序员。 所以我的 JS 和 Google 脚本充其量只是初级。我第一次测试脚本时,它起作用了。奇妙的是,直到它没有。 它毫无问题地移动了我的第一个文件。然后,我在驱动器中创建了相同文件的几个副本,以查看它如何处理多个副本。我现在收到一个错误:
例外:找不到具有给定 ID 的项目,或者您没有找到 有权访问它。 (第 15 行,文件“CodeA1”)
这是我的代码:
function SearchFiles() {
//searches based on naming criteria
var searchFor ='title contains "Reference Data Performance"'; //test file
var names =[];
var fileIds=[];
var files = DriveApp.searchFiles(searchFor);
while (files.hasNext()) {
var file = files.next();
var fileId = file.getId();// To get FileId of the file
fileIds.push(fileId);
var name = file.getName();
names.push(name);
}
var file = DriveApp.getFileById(fileIds);
supportsTeamDrives: true;
supportTeamDrives: true;
var targetFolder = DriveApp.getFolderById('TEAMDriveID');
targetFolder.addFile(file);
}
【问题讨论】:
-
.getFileById()似乎不支持数组,不妨尝试循环遍历它们。 -
可能是这样,但即使驱动器中只有一个文件,我也会遇到同样的错误。所以它工作了一次,现在我不能让它再次运行....
-
我不明白这一行
var file = DriveApp.getFileById(fileIds);这是一个getFileById()但你给了一个 ID 数组。在构建对象的函数的底部也缺少一些东西。我猜你在将代码复制到 SO 时犯了一个错误。
标签: google-apps-script google-drive-api google-drive-shared-drive