The tutorial on hosting websites with Google Drive makes use of the HTMLService of Google Apps Script. The user uploads a zip file, the file is extracted using the Utilities.unzip method (make the sure the MIME type is set to application/zip) and saved in a folder.
The setSharing method is then used for making the Google Drive folder public and the ID of the folder is passed to the user. Here’s the full code:
/* Written by Amit Agarwal on August 9, 2013 */
function doGet() {
var output = HtmlService.createHtmlOutputFromFile('labnol');
output.setTitle('Publish Website on Google Drive');
return output;
}
function uploadWebsite(form) {
try {
var zip,
files,
name,
folder,
file,
host,
found = false;
zip = form.zipFile.setContentType('application/zip');
files = Utilities.unzip(zip);
// Unique folder name based on the current date and time
name = Utilities.formatDate(new Date(), 'GMT', 'ddMMyyyyHHmmss');
folder = DriveApp.createFolder('Website #' + name);
for (var i = 0; i < files.length; i++) {
file = folder.createFile(files[i]);
if (file.getName() === 'index.html') {
found = true;
}
}
if (found) {
// Set the sharing permissions of the Drive folder as Public
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
var site = 'https://googledrive.com/host/' + folder.getId() + '/';
return 'Your <a href="' + site + '" target="_blank">website</a> is now live on Google Drive. The URL is: ' + site;
} else {
// if the index.html file is not available, don't publish the website
DriveApp.removeFolder(folder);
}
return "Sorry, we couldn't find an index.html in your zip file. Please try again.";
} catch (e) {
return e.toString();
}
}