Nugroho's blog.

Wednesday, October 21, 2015

List All Files and Folders into Google Spreadsheet using Google App Script

 I updated my last code, so it will list all folders name too, in addition of files name.

 It will search the files and folders name in certain folder,

 get the name,

 the date it created,

 the size,

 the url address,

 thi file id,

 description,

 and the MIME type (except in folder, I hardcoded it by write string "folder")



 
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);
// listFilesAndFoldersInFolder(folder)
list_all_files_and_folders_inside_one_folder_without_subfolders()
return "File uploaded successfully " + file.getUrl();

} catch (error) {

return error.toString();
}

}

function list_all_files_and_folders_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())

list.push(row);
}
var files = folder.getFolders();
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(),"folder")

list.push(row);
}

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

}

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



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);
}







Tuesday, October 20, 2015

#MelawanAsap

 Pake jasa pawang hujan seluruh Indonesia?

Working with Audio in Python

 What I did is read a .wav file, extract the raw audio data, (I use first 1/20 data for sample), transform it using Fast Fourier Transform, manipulate it (I only use the first cluster frequency spectrum ), transform it back using InverseFFT.

 I use matplotlib and numpy module to plot and compute.

 I also use sys and wave module as 'interface'.


import matplotlib.pyplot as plt
import numpy as np
import wave
import sys


spf = wave.open('violin2.wav','r')

#Extract Raw Audio from Wav File
signal = spf.readframes(-1)
signal = np.fromstring(signal, 'Int16')
fs = spf.getframerate()
print fs

#If Stereo
if spf.getnchannels() == 2:
print 'Just mono files'
sys.exit(0)

Time=np.linspace(0, len(signal)/fs, num=len(signal))
sample = []
st=[]
for i in np.arange(len(signal)/20):
sample.append( signal[i])
st.append(Time[i])

ft=np.fft.fft(sample)
pft=[]
for i in np.arange(len(ft)):
if i<500: data-blogger-escaped-ample="" data-blogger-escaped-else:="" data-blogger-escaped-from="" data-blogger-escaped-ft="" data-blogger-escaped-i="" data-blogger-escaped-ift="" data-blogger-escaped-ignal="" data-blogger-escaped-ime="" data-blogger-escaped-pft.append="" data-blogger-escaped-pft="" data-blogger-escaped-plt.figure="" data-blogger-escaped-plt.grid="" data-blogger-escaped-plt.plot="" data-blogger-escaped-plt.show="" data-blogger-escaped-plt.title="" data-blogger-escaped-pre="" data-blogger-escaped-rue="" data-blogger-escaped-sample="" data-blogger-escaped-signal="" data-blogger-escaped-st="" data-blogger-escaped-wave...="">
.





Monday, October 19, 2015

:)

 Melihat koreografi Bruno Mars dan The Hooligans, jadinya malah teringat Rhoma Irama dan Soneta

Friday, October 16, 2015

iWork Update on El Capitan

 My Pages, Number and Keynote received new feature.

 ...and hey, my view is increased twofold, :D

(And my Keynote on iPhone 4s is upgraded as well)







Sunday, October 11, 2015

Belajar.

Dulu belajar berbicara.

Sekarang perlu untuk belajar diam.

(The Tales of Tatonka)

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)