Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // G. Variables
- var sh = SpreadsheetApp.getActiveSheet();
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var lastrow = ss.getLastRow();
- //
- //
- //
- function onOpen() {
- var menuEntries = [ {name: "generic doclist", functionName: "gendoclisttest"},
- {name: "categorized list(spreadsheet/docs)", functionName: "doclistcat"},
- {name: "Search DocList", functionName: "searchUI"},
- ];
- ss.addMenu("Utilities", menuEntries);//
- }
- //
- // Build a simple UI to enter search item and show results + activate result's row
- function searchUI() {
- var app = UiApp.createApplication().setHeight(130).setWidth(400);
- app.setTitle("Search by name and folder name");
- var panel = app.createVerticalPanel();
- var txtBox = app.createTextBox().setFocus(true).setWidth("180");
- var label=app.createLabel(" Eléments à rechercher :")
- var label=app.createLabel(" Item to search for :")
- panel.add(label);
- txtBox.setId("item").setName("item");
- var label0=app.createLabel("Row").setWidth("40");
- var label1=app.createLabel("Doc Name").setWidth("180");
- var label2=app.createLabel("Doc ID").setWidth("180");
- var hpanel = app.createHorizontalPanel();
- hpanel.add(label0).add(label1).add(label2);
- //
- var txt0=app.createTextBox().setId("lab0").setName("0").setWidth("40");
- var txt1=app.createTextBox().setId("lab1").setName("txt1").setWidth("180");
- var txt2=app.createTextBox().setId("lab2").setName("txt2").setWidth("180");
- var hpanel2 = app.createHorizontalPanel();
- hpanel2.add(txt0).add(txt1).add(txt2);
- var hidden = app.createHidden().setName("hidden").setId("hidden");
- var subbtn = app.createButton("next ?").setId("next").setWidth("250");
- panel.add(txtBox);
- panel.add(subbtn);
- panel.add(hidden);
- panel.add(hpanel);
- panel.add(hpanel2);
- var keyHandler = app.createServerHandler("click");
- txtBox.addKeyUpHandler(keyHandler)
- keyHandler.addCallbackElement(panel);
- //
- var submitHandler = app.createServerHandler("next");
- subbtn.addClickHandler(submitHandler);
- submitHandler.addCallbackElement(panel);
- //
- app.add(panel);
- ss.show(app);
- }
- //
- function click(e){
- var row=ss.getActiveRange().getRowIndex();
- var app = UiApp.getActiveApplication();
- var txtBox = app.getElementById("item");
- var subbtn = app.getElementById("next").setText("next ?")
- var txt0=app.getElementById("lab0").setText('--');
- var txt1=app.getElementById("lab1").setText('no match').setStyleAttribute("background", "white");// default value to start with
- var txt2=app.getElementById("lab2").setText('');
- var item=e.parameter.item.toLowerCase(); // item to search for
- var hidden=app.getElementById("hidden")
- var data = sh.getRange(2,1,lastrow,8).getValues();// get the 8 columns of data
- for(nn=0;nn<data.length;++nn){ ;// iterate trough
- 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
- var datarow=data[nn]
- for(cc=0;cc<datarow.length;++cc){
- if(datarow[cc].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){break}
- }
- var idx=cc
- txt0.setText(nn+2);
- txt1.setText(data[nn][idx]).setStyleAttribute("background", "cyan");
- txt2.setText(data[nn][idx+1]);
- sh.getRange(nn+2,idx+1).activate();
- subbtn.setText("found '"+item+"' in row "+Number(nn+2)+", next ?");
- hidden.setValue(nn.toString())
- break
- }
- }
- return app ;// update UI
- }
- function next(e){
- var row=ss.getActiveRange().getRowIndex();
- var app = UiApp.getActiveApplication();
- var txtBox = app.getElementById("item");
- var subbtn = app.getElementById("next").setText("no other match")
- var hidden=app.getElementById("hidden");
- var start=Number(e.parameter.hidden)+1;//returns the last search index stored in the UI
- var item=e.parameter.item.toLowerCase(); // item to search for
- var txt0=app.getElementById("lab0");
- var txt1=app.getElementById("lab1").setStyleAttribute("background", "yellow");
- var txt2=app.getElementById("lab2");
- var data = sh.getRange(2,1,lastrow,8).getValues();// get the 3 columns of data
- for(nn=start;nn<data.length;++nn){ ;// iterate trough
- 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
- var datarow=data[nn]
- for(cc=0;cc<datarow.length;++cc){
- if(datarow[cc].toString().toLowerCase().match(item.toString())==item.toString()&&item!=''){break}
- }
- var idx=cc
- txt0.setText(nn+2);
- txt1.setText(data[nn][idx]).setStyleAttribute("background", "cyan");
- txt2.setText(data[nn][idx+1]);
- sh.getRange(nn+2,idx+1).activate();
- subbtn.setText("found '"+item+"' in row "+Number(nn+2)+", next ?");
- hidden.setValue(nn.toString())
- break
- }
- }
- return app ;// update UI
- }
- //
- function gendoclisttest(){
- sh.getRange(1,1).setValue('.');// usefull to allow for 'clear' if page is empty
- sh.getRange(1,1,ss.getLastRow(),ss.getLastColumn()).clear().setWrap(false).setBorder(false,false,false,false,false,false);// clears whole sheet
- var doclist=new Array();
- var folders=DocsList.getFolders()
- for(ff=0;ff<folders.length;++ff){
- doclist=folders[ff].getFiles(0,2000)
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if (names.length>0){
- names.sort();
- var row=ss.getLastRow()+1;
- sh.getRange(row,1,1,3).setValues([["Folders","Generic Doc Names","ID"]]).setBorder(false,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,1).setValue(folders[ff].getName())
- sh.getRange(row+1,2,names.length,2).setValues(names);
- }
- }
- doclist=DocsList.getRootFolder().getFiles(0,2000)
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if (names.length>0){
- names.sort();
- var row=ss.getLastRow()+1;
- sh.getRange(row,1,1,3).setValues([["Root","Generic Doc Names","ID"]]).setBorder(false,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,2,names.length,2).setValues(names);
- }
- }
- //
- function doclistcat(){
- var doclist=new Array();
- var folders=DocsList.getFolders()
- var zz=0;var nn=0
- for(ff=0;ff<folders.length;++ff){
- doclist=folders[ff].getFilesByType("spreadsheet",0,2000);
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if(names.length>0){
- names.sort();
- zz=zz+nn
- var row=zz-nn+1
- sh.getRange(row,4,1,3).setValues([["Folders","Spreadsheet Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,4).setValue(folders[ff].getName()).setB
- sh.getRange(row+1,5,names.length,2).setValues(names);
- }
- }
- doclist=DocsList.getRootFolder().getFilesByType("spreadsheet",0,2000);
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if(names.length>0){
- names.sort();
- zz=zz+nn
- var row=zz-nn+1
- sh.getRange(row,4,1,3).setValues([["Root","Spreadsheet Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,5,names.length,2).setValues(names);
- }
- //
- var zz=0;var nn=0
- for(ff=0;ff<folders.length;++ff){
- doclist=folders[ff].getFilesByType("document",0,2000);
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if(names.length>0){
- names.sort();
- zz=zz+nn
- var row=zz-nn+1
- sh.getRange(row,7,1,3).setValues([["Folders","Text Document Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,7).setValue(folders[ff].getName()).setB
- sh.getRange(row+1,8,names.length,2).setValues(names);
- }
- }
- doclist=DocsList.getRootFolder().getFilesByType("document",0,2000);
- var names = new Array();
- for (nn=0;nn<doclist.length;++nn){
- names.push([doclist[nn].getName(),doclist[nn].getUrl()]);
- }
- if(names.length>0){
- names.sort();
- zz=zz+nn
- var row=zz-nn+1
- sh.getRange(row,7,1,3).setValues([["Root","document Names","ID"]]).setBorder(true,true,true,true,true,true).setBackgroundColor("#dddddd");
- sh.getRange(row+1,8,names.length,2).setValues(names);
- }
- }
- //
- //eof
Advertisement
Add Comment
Please, Sign In to add comment