Вы можете использовать следующий код для достижения sh ваших целей:
function sortFiles() {
// var folders = Drive.Files.list({
// "q": "mimeType = 'application/vnd.google-apps.folder' and trashed = false",
// "fields": "items(title, id)"
// });
var folders = DriveApp.getFolders();
// var files = Drive.Files.list({
// "q": "mimeType != 'application/vnd.google-apps.folder' and trashed = false",
// "fields": "items(title, id)"
// });
var files = DriveApp.getFiles();
var folderIDs = [];
var folderNames = [];
var fileIDs = [];
var fileNames = [];
do {
var folder = folders.next();
folderNames.push(folder.getName());
folderIDs.push(folder.getId());
} while (folders.hasNext());
do {
var file = files.next();
fileNames.push(file.getName());
fileIDs.push(file.getId());
} while (files.hasNext());
for (var i = 0; i < fileNames.length; i++) {
for (var j = 0; j < folderNames.length; j++) {
if (folderNames[j].search(fileNames[i]) > -1) {
var oldFileParents = DriveApp.getFileById(fileIDs[i]).getParents();
DriveApp.getFolderById(folderIDs[j]).addFile(DriveApp.getFileById(
fileIDs[i]));
if (oldFileParents.hasNext()) {
do {
oldFileParents.next().removeFile(DriveApp.getFileById(fileIDs[i]));
} while (oldFileParents.hasNext());
}
}
}
}
}
На основании вашего комментария я обновил код, чтобы использовать только класс DriveApp и не Drive API . Для дальнейшего использования я прокомментировал вызовы API для метода Files.list
, который я использовал для сбора всех файлов и папок (кроме тех, которые находятся в корзине).
Код будет Сначала используйте методы .getFolders()
и .getFiles(
) , чтобы собрать все папки и файлы вашего диска. Позже он создаст два массива для папок и файлов: один для идентификаторов и другой для имен. Затем массив имен повторяется в поисках совпадений. После того как найдено одно совпадение, он запишет текущую папку (и) файла с помощью методов .getFileById()
.getParents()
. Нам нужно использовать этот подход, потому что один файл может находиться в разных папках диска.
Итак, заключительные шаги будут следующими: во-первых, соберите текущую папку (и) файла. После этого мы включим файл в новую папку. И, наконец, мы должны удалить родительские папки, ранее сохраненные на первом шаге.
Пожалуйста, напишите мне снова, если вам нужна дополнительная помощь или разъяснения.