The Google Apps Script uses the Advanced Drive API to covert Microsoft Excel files (XLS, XLSX) into CSV files and saves them into a specific Google Drive folder. The Excel sheets are deleted after the CSV files are saved in Drive.
Also see: Convert Google Sheets to PDF Files
The conversion engine may timeout if you have too many XLS/XLSX files in a Google Drive and in that case, you’d need to include the time check to ensure that the script doesn’t exceed the execution time limit.
function convertXLSFilesToCSV() { var oauthToken = ScriptApp.getOAuthToken(), sourceFolder = DriveApp.getFolderById(SOURCE_XLS_FOLDER), targetFolder = DriveApp.getFolderById(TARGET_CSV_FOLDER), mimes = [MimeType.MICROSOFT_EXCEL, MimeType.MICROSOFT_EXCEL_LEGACY]; /* Written by Amit Agarwal */ /* email: amit@labnol.org */ /* website: www.ctrlq.org */ for (var m = 0; m < mimes.length; m++) { files = sourceFolder.getFilesByType(mimes[m]); while (files.hasNext()) { var sourceFile = files.next(); // Re-upload the XLS file after convert in Google Sheet format var googleSheet = JSON.parse(UrlFetchApp.fetch( "https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true", { method: "POST", contentType: "application/vnd.ms-excel", payload: sourceFile.getBlob().getBytes(), headers: { "Authorization": "Bearer " + oauthToken } } ).getContentText()); // The exportLinks object has a link to the converted CSV file var targetFile = UrlFetchApp.fetch( googleSheet.exportLinks["text/csv"], { method: "GET", headers: { "Authorization": "Bearer " + oauthToken } }); // Save the CSV file in the destination folder targetFolder.createFile(targetFile.getBlob()).setName(sourceFile.getName() + ".csv"); // Delete the processed file sourceFile.setTrashed(true); } } }