I have a folder (nested within many others) that has a ton of word docs, .docx. I need them all to be google docs. I’ve never used Google Scripts, but everything I’ve read says that’s the easiest way to do this.
I’ve never used Google Scripts, and when using ChatGPT, I can get the files to open but then it suddenly throws an error of:
Error processing file: filename.docx - API call to drive.files.copy failed with error: File not Found: (and then a string)
I don’t know where to begin and ChatGPT is no longer helpful. Here’s what it gave me, but if you could point me in the right direction of help me with this, I would really appreciate it. There’s too many files to manually type each of their ids:
function convertDocxToGoogleDocs() {
var folderId = 'YOUR_TARGET_FOLDER_ID'; // Replace with the actual folder ID of 'targetfolder'
var rootFolder = DriveApp.getFolderById(folderId);
var convertedFolder = rootFolder.createFolder('Converted Google Docs');
// Start processing from the root folder
processFolder(rootFolder, convertedFolder);
Logger.log('Conversion complete!');
}
function processFolder(folder, convertedFolder) {
// Get all the .docx files in the current folder
var files = folder.getFilesByType(MimeType.MICROSOFT_WORD);
while (files.hasNext()) {
var file = files.next();
Logger.log('Processing file: ' + file.getName() + ', ID: ' + file.getId());
try {
// Log file details
Logger.log('File URL: ' + file.getUrl());
Logger.log('File ID: ' + file.getId());
// Convert .docx to Google Docs
var copiedFile = Drive.Files.copy({}, file.getId(), { convert: true });
Logger.log('Converted file ID: ' + copiedFile.id);
// Move the converted file to the new folder
var newFile = DriveApp.getFileById(copiedFile.id);
newFile.moveTo(convertedFolder);
Logger.log('File moved to: ' + convertedFolder.getName());
} catch (e) {
Logger.log('Error processing file: ' + file.getName() + ' - ' + e.message);
}
}
// Recursively process all subfolders
var subfolders = folder.getFolders();
while (subfolders.hasNext()) {
var subfolder = subfolders.next();
Logger.log('Processing subfolder: ' + subfolder.getName());
processFolder(subfolder, convertedFolder);
}
}