Converting .xls to google spreadsheet in google apps script
Solution 1
This is now possible using the Advanced Drive service:
https://developers.google.com/apps-script/advanced/drive
When using Drive.Files.insert, simply set the optional parameter "convert" to "true".
var file = {
title: 'Converted Spreadsheet'
};
file = Drive.Files.insert(file, xlsxBlob, {
convert: true
});
This was also obtained from the above given issue
Solution 2
Other than using the delivered 'upload' and convert functions, it's not currently available. Requesting enhancement request here: http://code.google.com/p/google-apps-script-issues/issues/detail?id=1019
Solution 3
Here's the complete code to create a file in a particular folder: (was a hint but was not completely apparent to me from @ben-visness comment)
var file = {
"title": filename,
"parents": [{"id": folderId}]
};
file = Drive.Files.insert(file, blobObj, {
"convert": true
});
Note: This will require enabling advanced Drive service from within Google Apps Script - Menu > Resources > Advanced Google Services AND Menu > Resources > Advanced Google Services > Google API Console.
Solution 4
Here's the code I used to convert an Excel file into a Google Sheets file, with the same name and in the same folder.
var excel = DriveApp.getFileById(...);
var resource = {
title : excel.getName(),
mimeType : MimeType.GOOGLE_SHEETS,
parents: [{id : folder.getId()}],
}
Drive.Files.insert(resource, excel.getBlob());
In my case, I already had a folder
object available which represented the folder I wanted to save the sheet to, but you could just as easily get the folder of the original file using excel.getParents()
.
You will also have to enable an Advanced Google Service called "Drive API" in order to use Drive.Files
. Read more here.
Solution was originally derived from this article.
Buravchik
Updated on June 05, 2022Comments
-
Buravchik almost 2 years
I have an .xls file stored in Google Drive. I want to convert it to the Google Sheets spreadsheet file format from Google Apps Script. Is there any way to do this without external solutions?