Google Apps脚本将文件移动到Team Drive文件夹

时间:2019-10-24 15:58:25

标签: google-apps-script

背景: 问题的核心是我有一个Alteryx作业,将文件拖放到我的google驱动器中。这些文件实际上需要在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);

}

2 个答案:

答案 0 :(得分:0)

  

例外:找不到具有给定ID的项目,或者您找不到   有权访问它。

如果出现此错误,则最常发生

  • TeamDriveId不正确
  • 运行脚本的帐户不是团队驱动器的成员
  

还请注意:

     

supportsTeamDrives: true; supportTeamDrives: true;

     

是参数   Drive API,不要与DriveApp

混淆

答案 1 :(得分:0)

更新:

我最终使用了该脚本的简化版本。我让Alteryx以小时为单位计划文件创建(三个不同的文件)。然后,在每个Alteryx计划删除之后立即在Google Apps中触发一次运行脚本。简单?是。不雅吗也许。整周都在运行,文件到达目的地供人们处理。

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

  }

}