【问题标题】:Pulling Docs List from Collection从集合中提取文档列表
【发布时间】:2013-06-26 13:01:35
【问题描述】:

我有办法在电子表格中显示特定的集合文件和 URL?

我已经尝试过运行一个基本的 DocList Search 脚本,但我需要一些更直接的东西。我需要脚本来显示文件名、它所属的集合和 URL。

该项目的最终目标是创建一个 Google 站点,允许用户单击图像链接启动一个简单的“复制功能”,此复制功能将为用户在单独的驱动器中创建该文档的副本。但是,我们将在超过 1,000 个文档的大规模上执行此操作。因此,提取信息并使其更有条理会容易得多,然后从每个文档中复制 URL 部分,然后将其粘贴到脚本函数中。

【问题讨论】:

    标签: collections google-apps-script spreadsheet google-docs


    【解决方案1】:

    这是我很久以前写的一个脚本,它可以(略超过)你想要的......它显示了 ID,但你可以轻松地将它更改为显示 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
    

    【讨论】:

    • 非常感谢。完美运行!
    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2023-04-02
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多