I got the problem because using 'recursive' as function name, :)
At least now I know that, :)
The next? Beautifying the result, :D
function listFilesNFolders(form) {
var list = [];
var lv = 0; //lv for level or depth
list.push(['tadaa...<br>']);
list.push(['heheh...']);
var row = [];
row.push('<br> Hello World!!! ');
list.push(row);
var home = DriveApp.getFolderById('0BxZS62a5NdNYUGxySmp2QW41OUU');
list.push('<br>');
list.push(home.getName());
crawl(home,list,lv);
return list;
}
//don't use 'recursive' as function name, it won't work
function crawl(home,list,lv){
lv++;
list.push('<br>tadaa...'+lv+'...');
var files=home.getFiles();
while (files.hasNext()){
var file=files.next();
list.push('<br>f '+file.getName());
}
var folders=home.getFolders();
while (folders.hasNext()){
var folder=folders.next();
list.push('<br>d '+folder.getName());
crawl(folder,list,lv);
}
}
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html');
}