如果您的驱动器中有多个文件和文件夹,您将如何将同一名称文件移动到同一名称文件夹中。
即。
文件名= Bob,Tom
文件夹名称= Bob,Tom
文件' Bob'应该移到文件夹' Bob'和文件'汤姆'应该移到文件夹“Tom'。
”答案 0 :(得分:0)
GAS没有移动文件的命令。为了实现文件移动,在将文件复制到文件夹后,它会删除源文件。即使文件和文件夹名称相同,也可以运行。我准备了2个脚本。
如果存在复制目标文件夹:
var list = ['Bob', 'Tom'];
for (i in list){
var file = DriveApp.getFilesByName(list[i]).next();
var folder = DriveApp.getFoldersByName(list[i]).next(); // existing folder
var sourcefolder = file.getParents().next();
folder.addFile(list[i]);
sourcefolder.removeFile(list[i]);
}
如果不存在复制目标文件夹:
var list = ['Bob', 'Tom'];
for (i in list){
var file = DriveApp.getFilesByName(list[i]).next();
var folder = DriveApp.createFolder(list[i]); // make new folder
var sourcefolder = file.getParents().next();
folder.addFile(list[i]);
sourcefolder.removeFile(list[i]);
}
根据@pinoyyid的建议,我得到了另一种使用GAS在Google云端硬盘上移动文件的方法。我注意到" GAS没有移动文件的命令。"是错的。非常感谢@pinoyyid。
另一种方法:
var accesstoken = '#####';
var list = ['Bob', 'Tom'];
for (i in list){
var file = DriveApp.getFilesByName(list[i]).next().getId();
var folder = DriveApp.getFoldersByName(list[i]).next().getId(); // existing folder
var parameters = {
method:'put',
headers: {
'Authorization': 'Bearer ' + accesstoken,
'uploadType' : 'multipart/related'
},
contentType: 'application/json',
payload: JSON.stringify({'parents': [{id: folder}]}),
muteHttpExceptions : true
};
UrlFetchApp.fetch('https://www.googleapis.com/drive/v2/files/' + file, parameters);
}
使用Google API OAuth2.0的访问令牌,可以直接移动Google云端硬盘上的文件。
如果您在电子表格中有文件夹名称列表,如图所示,则可以使用以下脚本。该脚本将文件移动到文件夹。此时,文件名和文件夹名称相同。
var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('a1:a3').getValues();
for (i in list){
var file = DriveApp.getFilesByName(list[i][0]).next();
var folder = DriveApp.getFoldersByName(list[i][0]).next();
var sourcefolder = file.getParents().next();
folder.addFile(list[i][0]);
sourcefolder.removeFile(list[i][0]);
}