Following code is to move native gDocs from one folder on a drive into another which has subfolders with student names. The original file has a version of the student name and ID which is rearranged by the getSubfolderName. That part works, the only issue is it returns PDF's instead of the original files.
function moveFilesToModifiedSubfolders() {
var sourceFolderId = "source folder"; // Replace with the ID of your source folder
var destinationFolderId = "destination folder to be modified by sub"; // Replace with the ID of your destination folder
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var destinationFolder = DriveApp.getFolderById(destinationFolderId);
var files = sourceFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var subfolderName = getSubfolderName(fileName);
var subfolder = destinationFolder.getFoldersByName(subfolderName);
if (subfolder.hasNext()) {
subfolder.next().createFile(file);
} else {
var newSubfolder = destinationFolder.createFolder(subfolderName);
newSubfolder.createFile(file);
}
}
}
// used to match names to folders in another drive someone else created
function getSubfolderName(fileName) {
var words = fileName.split(" ");
if (words.length >= 2) {
var modifiedName = words[1] + ", " + words[0];
return modifiedName;
} else {
return fileName;
}
}
the only issue is it returns PDF's instead of the original files.
, I guessed that the reason for this is due to that createFile
is used for copying the file. In this case, makeCopy
is required to be used.move native gDocs from one folder on a drive into another which has subfolders with student names.
, if you want to move instead of copy the files, it is required to use moveTo
.But, unfortunately, I cannot understand your actual expected result of move native gDocs from one folder on a drive into another which has subfolders with student names.
. So, in this answer, I would like to propose 2 patterns.
In this pattern, the files are copied. Please modify moveFilesToModifiedSubfolders
as follows.
function moveFilesToModifiedSubfolders() {
var sourceFolderId = "source folder"; // Replace with the ID of your source folder
var destinationFolderId = "destination folder to be modified by sub"; // Replace with the ID of your destination folder
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var destinationFolder = DriveApp.getFolderById(destinationFolderId);
var files = sourceFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var subfolderName = getSubfolderName(fileName);
var subfolder = destinationFolder.getFoldersByName(subfolderName);
if (subfolder.hasNext()) {
// subfolder.next().createFile(file);
file.makeCopy(fileName, subfolder.next());
} else {
var newSubfolder = destinationFolder.createFolder(subfolderName);
// newSubfolder.createFile(file);
file.makeCopy(fileName, newSubfolder);
}
}
}
In this pattern, the files are moved. Please modify moveFilesToModifiedSubfolders
as follows.
function moveFilesToModifiedSubfolders() {
var sourceFolderId = "source folder"; // Replace with the ID of your source folder
var destinationFolderId = "destination folder to be modified by sub"; // Replace with the ID of your destination folder
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var destinationFolder = DriveApp.getFolderById(destinationFolderId);
var files = sourceFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var subfolderName = getSubfolderName(fileName);
var subfolder = destinationFolder.getFoldersByName(subfolderName);
if (subfolder.hasNext()) {
// subfolder.next().createFile(file);
file.moveTo(subfolder.next());
} else {
var newSubfolder = destinationFolder.createFolder(subfolderName);
// newSubfolder.createFile(file);
file.moveTo(newSubfolder);
}
}
}