Nugroho's blog.: Working with Google Script

Wednesday, October 21, 2015

Working with Google Script

 I heard it's powerful,
 it could be integrated with Google Drive,
 so I decided to give it a try.

 Try to make a form Name, NIM, Offering, and a button to upload a file.

 Basically, it's super simple form.

 It will upload file to my Google Drive, place it in folder NIM (or create it if there's no folder match with NIM).

 As addition, I created spreadsheet manually and update its content, the list of files in the folders. (still got a trouble)
 
function uploadFiles(form) {

try {

var dropbox = "Testing";
var folders = DriveApp.getFoldersByName(dropbox);

if (folders.hasNext()) {
var folder = folders.next();
} else {
var folder = DriveApp.createFolder(dropbox);
}

folders = folder.getFoldersByName(form.myNIM);
if(folders.hasNext()){
var anak = folders.next();
} else{
var anak = folder.createFolder(form.myNIM);
}


var blob = form.myFile;
var file = anak.createFile(blob);
file.setDescription("Uploaded by " + form.myName);


listFilesInFolder(folder)


return "File uploaded successfully " + file.getUrl();

} catch (error) {

return error.toString();
}

}

function listFilesInFolder(folderName) {

//var ssNew = SpreadsheetApp.create("Rekap");
//https://drive.google.com/open?id=11AzGyCcWfvcE_mUltyjAx17wJDghOS-YH5e_zrHT-zc
//https://docs.google.com/spreadsheets/d/11AzGyCcWfvcE_mUltyjAx17wJDghOS-YH5e_zrHT-zc/edit#gid=0
//var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc1234567/edit');
var ss = SpreadsheetApp.openById("11AzGyCcWfvcE_mUltyjAx17wJDghOS-YH5e_zrHT-zc");

SpreadsheetApp.setActiveSpreadsheet(ss);

var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();

/*
var myNewSheet = activeSpreadsheet.getSheetByName("Rekap");

if (myNewSheet != null) {
activeSpreadsheet.deleteSheet(myNewSheet);
}

myNewSheet = activeSpreadsheet.insertSheet();
myNewSheet.setName("Rekap");

*/
//0BxZS62a5NdNYUGxySmp2QW41OUU
//var folder = DriveApp.getFoldersByName(folderName).next();
var id = '0BxZS62a5NdNYUGxySmp2QW41OUU';
var folder = DriveApp.getFolderById(id);
var contents = folder.getFiles();

var file, data, sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();

sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]);
//sheet.appendRow(["Tadaa..."])
for (var i = 0; i < contents.length; i++) {

file = contents[i];

if (file.getFileType() == "SPREADSHEET") {
continue;
}

data = [
file.getName(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
file.getDescription(),
file.getFileType().toString()
];

sheet.appendRow(data);

}

};

function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html');
}



The Forms
< form id="myForm">
Nama <input type="text" name="myName" placeholder="Nama">
NIM <input type="text" name="myNIM" placeholder="NIM">
Offering <input type="text" name="myOff" placeholder="Offering">

Upload File<input type="file" name="myFile">
<input type="submit" value="Upload File"
onclick="this.value='Uploading..';
google.script.run.withSuccessHandler(fileUploaded)
.uploadFiles(this.parentNode);
return false;">

</form>

<div id="output"></div>

<script>
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>

<style>
input { display:block; margin: 20px; }
</style>



.

DriveApp don't have getFileType() so I used file.getMimeType() instead, :)

 

function list_all_files_inside_one_folder_without_subfolders(){
var ss = SpreadsheetApp.openById("11AzGyCcWfvcE_mUltyjAx17wJDghOS-YH5e_zrHT-zc");
SpreadsheetApp.setActiveSpreadsheet(ss);
var sh = SpreadsheetApp.getActiveSheet();
sh.clear();
var folder = DriveApp.getFolderById('0BxZS62a5NdNYUGxySmp2QW41OUU'); // I change the folder ID here
var list = [];
//list.push(['Name','ID','Size']);
list.push(["Name", "Date", "Size", "URL", "Download", "Description", "MIME"]);

var files = folder.getFiles();
while (files.hasNext()){
file = files.next();
var row = []
//row.push(file.getName(),file.getId(),file.getSize());
row.push(file.getName(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
file.getDescription(),file.getMimeType())
//file.getFileType().toString())

list.push(row);
}
sh.getRange(1,1,list.length,list[0].length).setValues(list);
}







No comments:

323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)