serge_insas

DocList + urls in a SS

Oct 29th, 2013
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // G. Variables
  2. var sh = SpreadsheetApp.getActiveSheet();
  3. var ss = SpreadsheetApp.getActiveSpreadsheet();
  4. var lastrow = ss.getLastRow();
  5. //
  6. //
  7. //
  8. function onOpen() {
  9.   var menuEntries = [ {name: "generic doclist", functionName: "gendoclisttest"},
  10.                       {name: "categorized list(spreadsheet/docs)", functionName: "doclistcat"},
  11.                       {name: "Search DocList", functionName: "searchUI"},
  12.                     ];
  13.   ss.addMenu("Utilities", menuEntries);//
  14. }
  15. //
  16. // Build a simple UI to enter search item and show results + activate result's row
  17. function searchUI() {
  18.   var app = UiApp.createApplication().setHeight(130).setWidth(400);
  19.   app.setTitle("Search by name and folder name");
  20.   var panel = app.createVerticalPanel();
  21.   var txtBox = app.createTextBox().setFocus(true).setWidth("180");
  22.   var label=app.createLabel(" Eléments à rechercher :")
  23.   var label=app.createLabel(" Item to search for :")
  24.   panel.add(label);
  25.   txtBox.setId("item").setName("item");
  26.   var label0=app.createLabel("Row").setWidth("40");
  27.   var label1=app.createLabel("Doc Name").setWidth("180");
  28.   var label2=app.createLabel("Doc ID").setWidth("180");
  29.   var hpanel = app.createHorizontalPanel();
  30.   hpanel.add(label0).add(label1).add(label2);
  31. //
  32.   var txt0=app.createTextBox().setId("lab0").setName("0").setWidth("40");
  33.   var txt1=app.createTextBox().setId("lab1").setName("txt1").setWidth("180");
  34.   var txt2=app.createTextBox().setId("lab2").setName("txt2").setWidth("180");
  35.   var hpanel2 = app.createHorizontalPanel();
  36.   hpanel2.add(txt0).add(txt1).add(txt2);
  37.   var hidden = app.createHidden().setName("hidden").setId("hidden");
  38.   var subbtn = app.createButton("next ?").setId("next").setWidth("250");
  39.   panel.add(txtBox);
  40.   panel.add(subbtn);
  41.   panel.add(hidden);
  42.   panel.add(hpanel);
  43.   panel.add(hpanel2);
  44.   var keyHandler = app.createServerHandler("click");
  45.   txtBox.addKeyUpHandler(keyHandler)
  46.   keyHandler.addCallbackElement(panel);
  47. //
  48.   var submitHandler = app.createServerHandler("next");
  49.   subbtn.addClickHandler(submitHandler);
  50.   submitHandler.addCallbackElement(panel);
  51. //
  52.   app.add(panel);  
  53.   ss.show(app);
  54.   }
  55. //
  56. function click(e){
  57.    var row=ss.getActiveRange().getRowIndex();              
  58.    var app = UiApp.getActiveApplication();
  59.    var txtBox = app.getElementById("item");
  60.    var subbtn = app.getElementById("next").setText("next ?")      
  61.    var txt0=app.getElementById("lab0").setText('--');
  62.    var txt1=app.getElementById("lab1").setText('no match').setStyleAttribute("background", "white");// default value to start with
  63.    var txt2=app.getElementById("lab2").setText('');
  64.    var item=e.parameter.item.toLowerCase(); // item to search for
  65.    var hidden=app.getElementById("hidden")                  
  66.    var data = sh.getRange(2,1,lastrow,8).getValues();// get the 8 columns of data
  67.        for(nn=0;nn<data.length;++nn){ ;// iterate trough
  68.          if(data[nn].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){;// if a match is found in one of the 3 fields, break the loop and show results
  69.             var datarow=data[nn]                                                                                    
  70.               for(cc=0;cc<datarow.length;++cc){
  71.                 if(datarow[cc].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){break}
  72.               }
  73.            var idx=cc                                                                                      
  74.           txt0.setText(nn+2);
  75.           txt1.setText(data[nn][idx]).setStyleAttribute("background", "cyan");
  76.           txt2.setText(data[nn][idx+1]);
  77.           sh.getRange(nn+2,idx+1).activate();
  78.           subbtn.setText("found '"+item+"' in row "+Number(nn+2)+", next ?");
  79.           hidden.setValue(nn.toString())                                                                                  
  80.           break
  81.           }
  82.       }
  83. return app    ;// update UI
  84. }
  85. function next(e){
  86.    var row=ss.getActiveRange().getRowIndex();              
  87.    var app = UiApp.getActiveApplication();
  88.    var txtBox = app.getElementById("item");
  89.    var subbtn = app.getElementById("next").setText("no other match")      
  90.    var hidden=app.getElementById("hidden");                  
  91.    var start=Number(e.parameter.hidden)+1;//returns the last search index stored in the UI
  92.    var item=e.parameter.item.toLowerCase(); // item to search for
  93.    var txt0=app.getElementById("lab0");
  94.    var txt1=app.getElementById("lab1").setStyleAttribute("background", "yellow");
  95.    var txt2=app.getElementById("lab2");
  96.    var data = sh.getRange(2,1,lastrow,8).getValues();// get the 3 columns of data
  97.        for(nn=start;nn<data.length;++nn){ ;// iterate trough
  98.          if(data[nn].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){;// if a match is found in one of the 3 fields, break the loop and show results
  99.             var datarow=data[nn]                                                                                    
  100.               for(cc=0;cc<datarow.length;++cc){
  101.                 if(datarow[cc].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){break}
  102.               }
  103.            var idx=cc                                                                                      
  104.           txt0.setText(nn+2);
  105.           txt1.setText(data[nn][idx]).setStyleAttribute("background", "cyan");
  106.           txt2.setText(data[nn][idx+1]);
  107.           sh.getRange(nn+2,idx+1).activate();
  108.           subbtn.setText("found '"+item+"' in row "+Number(nn+2)+", next ?");                                                                                              
  109.           hidden.setValue(nn.toString())                                                                                  
  110.           break
  111.           }
  112.       }
  113. return app    ;// update UI
  114. }
  115. //
  116. function gendoclisttest(){
  117.   sh.getRange(1,1).setValue('.');// usefull to allow for 'clear' if page is empty
  118.   sh.getRange(1,1,ss.getLastRow(),ss.getLastColumn()).clear().setWrap(false).setBorder(false,false,false,false,false,false);// clears whole sheet
  119.   var doclist=new Array();
  120.   var folders=DocsList.getFolders()
  121.   for(ff=0;ff<folders.length;++ff){
  122.     doclist=folders[ff].getFiles(0,2000)
  123.     var names = new Array();
  124.       for (nn=0;nn<doclist.length;++nn){
  125.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  126.       }
  127.   if (names.length>0){
  128.     names.sort();
  129.     var row=ss.getLastRow()+1;
  130.     sh.getRange(row,1,1,3).setValues([["Folders","Generic Doc Names","ID"]]).setBorder(false,true,true,true,true,true).setBackgroundColor("#dddddd");
  131.     sh.getRange(row+1,1).setValue(folders[ff].getName())
  132.     sh.getRange(row+1,2,names.length,2).setValues(names);
  133.   }
  134.     }
  135.     doclist=DocsList.getRootFolder().getFiles(0,2000)
  136.     var names = new Array();
  137.       for (nn=0;nn<doclist.length;++nn){
  138.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  139.       }
  140.   if (names.length>0){
  141.     names.sort();
  142.     var row=ss.getLastRow()+1;
  143.     sh.getRange(row,1,1,3).setValues([["Root","Generic Doc Names","ID"]]).setBorder(false,true,true,true,true,true).setBackgroundColor("#dddddd");
  144.     sh.getRange(row+1,2,names.length,2).setValues(names);
  145.     }
  146. }
  147. //
  148. function doclistcat(){
  149.   var doclist=new Array();
  150.   var folders=DocsList.getFolders()
  151.   var zz=0;var nn=0
  152.   for(ff=0;ff<folders.length;++ff){
  153.     doclist=folders[ff].getFilesByType("spreadsheet",0,2000);
  154.     var names = new Array();
  155.       for (nn=0;nn<doclist.length;++nn){
  156.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  157.       }
  158.  if(names.length>0){
  159.     names.sort();
  160.     zz=zz+nn
  161.     var row=zz-nn+1
  162.     sh.getRange(row,4,1,3).setValues([["Folders","Spreadsheet Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
  163.     sh.getRange(row+1,4).setValue(folders[ff].getName()).setB
  164.     sh.getRange(row+1,5,names.length,2).setValues(names);
  165.     }
  166.     }
  167.     doclist=DocsList.getRootFolder().getFilesByType("spreadsheet",0,2000);
  168.     var names = new Array();
  169.       for (nn=0;nn<doclist.length;++nn){
  170.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  171.       }
  172.  if(names.length>0){
  173.     names.sort();
  174.     zz=zz+nn
  175.     var row=zz-nn+1
  176.     sh.getRange(row,4,1,3).setValues([["Root","Spreadsheet Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
  177.     sh.getRange(row+1,5,names.length,2).setValues(names);
  178.     }
  179. //
  180.   var zz=0;var nn=0
  181.   for(ff=0;ff<folders.length;++ff){
  182.     doclist=folders[ff].getFilesByType("document",0,2000);
  183.     var names = new Array();
  184.       for (nn=0;nn<doclist.length;++nn){
  185.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  186.       }
  187.  if(names.length>0){
  188.     names.sort();
  189.     zz=zz+nn
  190.     var row=zz-nn+1
  191.     sh.getRange(row,7,1,3).setValues([["Folders","Text Document Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
  192.     sh.getRange(row+1,7).setValue(folders[ff].getName()).setB
  193.     sh.getRange(row+1,8,names.length,2).setValues(names);
  194.     }
  195.     }
  196.     doclist=DocsList.getRootFolder().getFilesByType("document",0,2000);
  197.     var names = new Array();
  198.       for (nn=0;nn<doclist.length;++nn){
  199.       names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
  200.       }
  201.  if(names.length>0){
  202.     names.sort();
  203.     zz=zz+nn
  204.     var row=zz-nn+1
  205.     sh.getRange(row,7,1,3).setValues([["Root","document Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
  206.     sh.getRange(row+1,8,names.length,2).setValues(names);
  207.     }  
  208. }
  209. //
  210. //eof
Advertisement
Add Comment
Please, Sign In to add comment