Переместить файл с Диска в папку TeamDrive appscript

Я хочу передать файл из MyDrive в TeamDrive с помощью скрипта из AppmMaker. Я использую DriveApp для создания файла в MyDrive, а с помощью виджета DrivePicker от разработчика приложений я получаю идентификатор из целевой папки для сохранения файла. 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
  });
}

У меня появляется ошибка "Невозможно установить ограничения на общий доступ к элементу общего диска".

Ссылка: Как переместить файл с MyDrive на общий диск ?

(решение ссылки не работает, потому что я хочу переместить его в папку в teamdrive, а не непосредственно в teamdrive)

Любая идея ?


person Hugo Bricoult    schedule 17.04.2019    source источник
comment
Попробуйте использовать update вместо patch или, если вам нужно продолжить с patch, явно удалите различные неприменимые свойства метаданных, которые существуют в файлах Диска, но не в файлах общего диска.   -  person tehhowch    schedule 17.04.2019
comment
Спасибо за ответ. update возвращает ту же ошибку, и я не нахожу документации о том, как удалить эти различные метаданные.   -  person Hugo Bricoult    schedule 17.04.2019
comment
Вы можете явно управлять метаданными файла, чтобы получить существующие метаданные, удалить неприменимые свойства из этого возвращенного объекта, а затем предоставить их в качестве новых метаданных для перемещенного файла.   -  person tehhowch    schedule 17.04.2019


Ответы (1)


В метаданных файла можно изменить параметр, поскольку файл на Диске и файл на общем диске не совпадают. Вы можете изменить это с помощью

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

person Hugo Bricoult    schedule 17.04.2019
comment
Ваш вопрос связан с перемещением файла, и предоставленный ответ предназначен для создания нового файла. Пожалуйста, отредактируйте свой вопрос / ответ соответствующим образом, чтобы другие не запутались. - person Darpan Sanghavi; 18.04.2019