将文件从云端硬盘移动到TeamDrive文件夹应用程序

时间:2019-04-17 11:14:42

标签: google-apps-script google-app-maker google-drive-team-drive

我想使用AppmMaker中的脚本将文件从MyDrive传输到TeamDrive。我使用DriveApp在MyDrive中创建文件,并使用来自appmaker的DrivePicker小部件,我从目标文件夹获取ID以保存文件。 DriveApp可以通过以下方式在TeamDrive中移动文件

var file = DriveApp.getFileById(fileId);
var parentFolder = DriveApp.getFolderById(TEAM_DRIVE_ID);
parentFolder.addFile(file);

但不在TeamDrive的文件夹中。

我尝试使用此代码:

function moveFileToFolder(fileIds, newFolderId) {  
  var file = Drive.Files.get(fileIds, {supportTeamDrives: true,supportsTeamDrives: true});

  Drive.Files.patch(file, fileIds, {
    removeParents: file.parents.map(function(f) { return f.id; }),
    addParents: [newFolderId],
    supportTeamDrives: true,
    supportsTeamDrives: true
  });
}

我出现错误“无法在Team Drive项目上设置共享限制。”

参考:How to move a file from MyDrive to Team Drive?

(参考解决方案不起作用,因为我想将其移动到teamdrive的文件夹中而不是直接在teamdrive中)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

文件元数据中有一个要更改的参数,因为驱动器文件和团队驱动器文件不相同。您可以使用

进行更改
var file = Drive.Files.get(FileId);
file.capabilities.canMoveTeamDriveItem = true;

然后只需用

移动它
var fileDriveApp = DriveApp.getFileById(FileId); 
fileDriveApp.getParents().next().removeFile(fileDriveApp);
var folder = DriveApp.getFolderById(foldersId);
folder.addFile(fileDriveApp);

参考:https://developers.google.com/drive/api/v3/reference/files