Google apps script Google应用程序脚本将文件移动到Team Drive文件夹

Google apps script Google应用程序脚本将文件移动到Team Drive文件夹,google-apps-script,google-drive-api,google-drive-shared-drive,Google Apps Script,Google Drive Api,Google Drive Shared Drive,背景: 问题的核心是我有一个Alteryx工作,将文件放入我的谷歌硬盘。实际上,这些文件需要放在TeamDrive文件夹中。尽管我可能会尝试,但我还没有找到让Alteryx这样做的方法。因此需要这个脚本 实际问题: 这里是标准:我用相同的命名约定创建文件,只更改日期。我需要将这些文件从我的驱动器传送到团队驱动器,最终在那里对它们进行处理。 使用堆栈上已有的资源,我在这里找到了极好的解决方案:在这里,我能够拼凑出一个工作脚本 要知道,我是数据分析方面的一名功能性很差的python程序员。所以我的J

背景: 问题的核心是我有一个Alteryx工作,将文件放入我的谷歌硬盘。实际上,这些文件需要放在TeamDrive文件夹中。尽管我可能会尝试,但我还没有找到让Alteryx这样做的方法。因此需要这个脚本

实际问题: 这里是标准:我用相同的命名约定创建文件,只更改日期。我需要将这些文件从我的驱动器传送到团队驱动器,最终在那里对它们进行处理。 使用堆栈上已有的资源,我在这里找到了极好的解决方案:在这里,我能够拼凑出一个工作脚本

要知道,我是数据分析方面的一名功能性很差的python程序员。所以我的JS和Google脚本充其量只是初级的。我第一次测试脚本时,它成功了。好极了,直到它没有。 它毫无问题地移动了我的第一个文件。然后,我在驱动器中创建了同一文件的几个副本,以查看它如何处理多个文件。我现在得到一个错误:

异常:找不到具有给定ID的项目,或者您没有 有权限访问它。(第15行,文件“代码A1”)

这是我的密码:

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);

}
异常:找不到具有给定ID的项目,或者您没有 有权限访问它

如果出现以下情况之一,则最常发生此错误:

  • TeamDriveId
    不正确
  • 从中运行脚本的帐户不是团队驱动器的成员
另请注意:

supportsTeamDrives:true;
SupportTeamDrive:正确

是参数 对于
Drive API
,不要与
DriveApp

异常:找不到具有给定ID的项目,或者您没有 有权限访问它

如果出现以下情况之一,则最常发生此错误:

  • TeamDriveId
    不正确
  • 从中运行脚本的帐户不是团队驱动器的成员
另请注意:

supportsTeamDrives:true;
SupportTeamDrive:正确

是参数 对于
Drive API
,不要与
DriveApp

更新:

我最终使用了这个脚本的简化版本。我让Alteryx以小时为增量计划文件创建(三个不同的文件)。然后在谷歌应用程序中触发,在每次Alteryx计划的删除后直接运行脚本。简单?对不雅?大概整个星期都在运行,文件到达目的地供人们处理

function SearchFiles() {
  //searches based on naming criteria 
  var searchFor ='title contains "Reference Data Performance"'; //looks for file that matches requirements
   var files = DriveApp.searchFiles(searchFor);
  while (files.hasNext()) {
    var file = files.next();
    var fileId = file.getId();// To get FileId of the file


      var file = DriveApp.getFileById(fileId); //grabs file ready to pass to google drive.
supportsTeamDrives: true;
        supportTeamDrives: true;
        var targetFolder = DriveApp.getFolderById('FOLDERID');
        targetFolder.addFile(file);//good for getting a single file needs loop to grab multiple from Array

  }

}
更新:

我最终使用了这个脚本的简化版本。我让Alteryx以小时为增量计划文件创建(三个不同的文件)。然后在谷歌应用程序中触发,在每次Alteryx计划的删除后直接运行脚本。简单?对不雅?大概整个星期都在运行,文件到达目的地供人们处理

function SearchFiles() {
  //searches based on naming criteria 
  var searchFor ='title contains "Reference Data Performance"'; //looks for file that matches requirements
   var files = DriveApp.searchFiles(searchFor);
  while (files.hasNext()) {
    var file = files.next();
    var fileId = file.getId();// To get FileId of the file


      var file = DriveApp.getFileById(fileId); //grabs file ready to pass to google drive.
supportsTeamDrives: true;
        supportTeamDrives: true;
        var targetFolder = DriveApp.getFolderById('FOLDERID');
        targetFolder.addFile(file);//good for getting a single file needs loop to grab multiple from Array

  }

}

.getFileById()
似乎不支持数组,也许可以尝试通过数组进行循环。这可能是因为即使驱动器中只有一个文件,我也会遇到相同的错误。所以它曾经工作过一次,现在我无法让它再次运行……我不理解这行代码
var file=DriveApp.getFileById(fileid)
它是一个
getFileById()
但是您给出了一个id数组。另外,在构建对象的函数的底部部分缺少一些内容。我猜您在将代码复制到SO中时出错了。
.getFileById()
似乎不支持数组,也许可以尝试通过数组进行循环。这可能是错误的,但即使驱动器中只有一个文件,我也会遇到同样的错误。所以它曾经工作过一次,现在我无法让它再次运行……我不理解这行代码
var file=DriveApp.getFileById(fileid)
它是一个
getFileById()
但是您给出了一个id数组。另外,在构建对象的函数的底部部分缺少一些内容。我猜你把代码复制到SO中是个错误。非常正确!我收到了我们网络安全部门的一封电子邮件。基本上,我可以访问所有驱动器,但即使我提交了应用程序访问所需的所有文件。我再次等待访问权限。第一次工作,虽然我知道这比我现在介绍的要顺利得多。我很高兴你找到了原因。如果你的答案,考虑接受它,以增加可见性其他用户有类似的问题。我收到了我们网络安全部门的一封电子邮件。基本上,我可以访问所有驱动器,但即使我提交了应用程序访问所需的所有文件。我再次等待访问权限。第一次工作,虽然我知道这比我现在介绍的要顺利得多。我很高兴你找到了原因。如果对你的答案,考虑接受它,以增加对其他用户有类似问题的可见性。