Collections 从集合中提取文档列表

Collections 从集合中提取文档列表,collections,google-apps-script,spreadsheet,google-docs,Collections,Google Apps Script,Spreadsheet,Google Docs,有没有办法在电子表格中显示特定的集合文件和URL 我已经尝试运行一个基本的文档列表搜索脚本,但我需要一些更直接的东西。我需要脚本来显示文件名、它所属的集合和URL 该项目的最终目标是创建一个谷歌网站,允许用户点击图像链接,启动一个简单的“复制功能”。该复制功能将为用户在单独的驱动器中创建该文档的副本。然而,我们将在超过1000份文件的大规模上进行这项工作。因此,与从每个文档中复制URL部分,然后将其粘贴到脚本函数中相比,提取信息并使其更有条理要容易得多。这是我不久前编写的一个脚本,它可以(比)实

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

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


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

这是我不久前编写的一个脚本,它可以(比)实现您想要的功能。。。它显示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
//G.变量
var sh=SpreadsheetApp.getActiveSheet();
var ss=SpreadsheetApp.getActiveSpreadsheet();
var lastrow=ss.getLastRow();
//
//
//
函数onOpen(){
var menuEntries=[{name:“generic doclist”,functionName:“gendoclisttest”},
{name:“分类列表(电子表格/文档)”,functionName:“doclistcat”},
{name:“搜索文档列表”,functionName:“searchUI”},
];
ss.添加菜单(“实用程序”,菜单)//
}
//
//构建一个简单的用户界面,输入搜索项目并显示结果+激活结果行
函数searchUI(){
var app=UiApp.createApplication().setHeight(130)、setWidth(400);
app.setTitle(“按名称或文件夹名称搜索”);
var panel=app.createVerticalPanel();
var txtBox=app.createTextBox().setFocus(true).setWidth(“180”);
var label=app.createLabel(“Elémentsárechercher:”)
var label=app.createLabel(“要搜索的项目:”)
面板。添加(标签);
txtBox.setId(“项目”).setName(“项目”);
var label0=app.createLabel(“行”).setWidth(“40”);
var label1=app.createLabel(“文件名”).setWidth(“180”);
var label2=app.createLabel(“文档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(“隐藏”).setId(“隐藏”);
var subbtn=app.createButton(“下一步”).setId(“下一步”).setWidth(“250”);
面板。添加(txtBox);
面板。添加(子BTN);
面板。添加(隐藏);
面板。添加(hpanel);
面板。添加(hpanel2);
var keyHandler=app.createServerHandler(“单击”);
addKeyUpHandler(keyHandler)
keyHandler.addCallbackElement(面板);
//
var submitHandler=app.createServerHandler(“下一步”);
subbtn.addClickHandler(submitHandler);
submitHandler.AddCallback元素(面板);
//
应用程序添加(面板);
ss.show(app);
}
//
功能点击(e){
var row=ss.getActiveRange().getRowIndex();
var app=UiApp.getActiveApplication();
var txtBox=app.getElementById(“项目”);
var subbtn=app.getElementById(“下一步”).setText(“下一步”)
var txt0=app.getElementById(“lab0”).setText('--');
var txt1=app.getElementById(“lab1”).setText(“不匹配”).setStyleAttribute(“背景”、“白色”);//开始时的默认值
var txt2=app.getElementById(“lab2”).setText(“”);
var item=e.parameter.item.toLowerCase();//要搜索的项
var hidden=app.getElementById(“隐藏”)
var data=sh.getRange(2,1,lastrow,8).getValues();//获取8列数据

(nn=0;nn)非常感谢你。工作得很好!