我正在以这种方式移动文件:
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云端硬盘的Web界面移动文件时,这种情况不会发生。
答案 0 :(得分:1)
根据我的经验,使用Drive API v3移动不会更改文件的修改日期。在您的问题中,使用DriveApp移动文件时,修改日期已更改。我认为DriveApp使用Drive API v2。所以我对此进行了调查,因为我对这种情况感兴趣。
适用于Drive API v2drive.files.update
和drive.files.patch
移动文件时,修改日期已更改。drive.files.update
移动文件时,修改日期不已更改。使用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)
如果这对你没用,我很抱歉。