Дата изменения файлов на диске изменяется, когда Google Apps Script перемещает файл в другую папку. - PullRequest
0 голосов
/ 24 апреля 2018

Я перемещаю файл следующим образом:

var idOriginFolder = 'ABCDEFG12345abcdefg';
var originFolder = DriveApp.getFolderById(idOriginFolder);
var destinationFolder = DriveApp.createFolder('New Folder');
var searchString = '"'+idOriginFolder+'" in parents'
var foundFiles = DriveApp.searchFiles(searchString);
while (foundFiles.hasNext()){
 var file = foundFiles.next();
 destinationFolder.addFile(file);
 originFolder.removeFile(file);
}

Файлы перемещаются правильно, но дата изменения каждого перемещенного файла изменяется на дату выполнения скрипта.Вы знаете какой-нибудь способ избежать этого?Когда я перемещаю файлы через веб-интерфейс Google Drive, этого не происходит.

1 Ответ

0 голосов
/ 25 апреля 2018

По моему опыту, дата изменения файлов не изменяется при перемещении с помощью Drive API v3.На ваш вопрос, когда файлы были перемещены с помощью DriveApp, дата изменения была изменена.Я думаю, что DriveApp использует Drive API v2.Поэтому я исследовал это, потому что меня заинтересовала эта ситуация.

Для Drive API v2
  • Было обнаружено, что при перемещении файлов с использованием drive.files.update и drive.files.patch дата изменения изменялась.
Для Drive API v3
  • Было обнаружено, что при перемещении файлов с использованием drive.files.update дата изменения была NOT .

Пример сценария:

Пример сценария для использования Drive API v3 выглядит следующим образом.

var idOriginFolder = 'ABCDEFG12345abcdefg';
var destinationFolder = DriveApp.createFolder('New Folder').getId();
var searchString = '"'+idOriginFolder+'" in parents'
var foundFiles = DriveApp.searchFiles(searchString);
var requests = [];
while (foundFiles.hasNext()){
  var file = foundFiles.next();
  requests.push({
    url: "https://www.googleapis.com/drive/v3/files/" + file.getId() + "?addParents=" + destinationFolder + "&removeParents=" + idOriginFolder,
    method: "patch",
    headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
    muteHttpExceptions: true,
  });
}
var res = UrlFetchApp.fetchAll(requests);
Logger.log(res)

Примечание:

  • Исходя из этих результатов, он считаетсячто перемещение файлов через Web Interface может быть связано с Drive API v3.
  • Это простой пример сценария.Поэтому, если вы хотите переместить много файлов, я рекомендую использовать Пакетные запросы.

Ссылка:

Если это не помогло вам, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...