2013-06-26 1 views
0

У меня есть способ отображения конкретных файлов коллекций и URL-адресов в электронной таблице?Вытягивание списка документов из коллекции

Я уже пробовал использовать базовый сценарий поиска DocList, но мне нужно, чтобы что-то было более прямым. Мне понадобится сценарий для отображения имени файла, его коллекций и URL.

Конечной целью этого проекта является создание сайта Google, который позволяет пользователям щелкнуть ссылку «Изображение», запускающую простую «функцию копирования», эта функция копирования создаст копию этого документа для пользователя на отдельном диске. Однако мы будем делать это в массовом масштабе более 1000 документов. Таким образом, вытащить информацию и сделать ее более организованной, было бы намного проще, чем скопировать раздел URL из каждого документа, а затем вставить его в функции скриптов.

ответ

0

вот сценарий, который я написал довольно давно, что делает (немного больше), что вы хотите ... он показывает идентификаторы, но вы можете легко изменить его, чтобы отображать URL-адреса.

// 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 or 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].getId()]); 
     } 
    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].getId()]); 
     } 
    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].getId()]); 
     } 
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].getId()]); 
     } 
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].getId()]); 
     } 
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].getId()]); 
     } 
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 
+0

Огромное спасибо. Отлично! – user2524061