如何获取文件下载URL

时间:2014-03-27 00:20:04

标签: google-apps-script

嗨,我正在徘徊,在我的驱动器中制作一些更加美观的可搜索文件列表。

我制作了一个fileVar.getDownloadUrl()但是当我打印到html时,链接不在那里。 我检查了Logger.log()并且url没有记录。

getUrl()确实有效,买我也需要下载。

¿一些想法?

代码.gs

function getRecFol(folId){
   var l = [];
   var fol = DriveApp.getFolderById(folId);
   var arch = fol.getFiles();

   while (arch.hasNext()){
      var a = arch.next();
      //Logger.log(a.getId());
      l.push(a.getId());    
   }// fin primera parte
   //segunda parte.
   //Logger.log(resultado);
   var fols = fol.getFolders();
   var l2 = [];
   while (fols.hasNext()){
      var a = fols.next();
      //Logger.log('folder:');
      //Logger.log(a);
      var b = getRecFol(a.getId());
   for (var i = 0;i < b.length;i++){
      l2.push(b[i]);
   }
   }
   for (var i = 0;i < l2.length;i++){
      l.push(l2[i]);
   }
// Logger.log(resultado !=[]);
   return l;
}
/* TIPO PARA EL OBJETO CON LA INFORMACION PARA EL HTML */
function listedFile(id,title,tipe,description,fold,update,vision,descarga){
   this.id = id;
   this.title = title;
   this.tipe = tipe;
   this.description = description;
   this.fold = fold;
   this.update = update;
   this.descarga = descarga;
   this.vision = vision;
}

function getData(){

   var listaF = getRecFol('IdFolder');
   var listaO = [];
   for (var i = 0; i < listaF.length ;i++){
   var f = DriveApp.getFileById(listaF[i]);
   f.getDownloadUrl();
   var o = new listedFile(listaF[i],f.getName(),f.getMimeType(),f.getDescription(),f.getParents(),f.getLastUpdated(),f.getUrl(),f.getDownloadUrl());
   Logger.log(o.description);
   listaO.push(o);  
 }
 return listaO;
   }



   function doGet(){
     return HtmlService
     .createTemplateFromFile('index')
     .evaluate();
   };

HTML

<html>
  <body>
    Hello, world!
    <ol>
    <? var lista = getData();
    for (var i = 0; i < lista.length; i++){ ?>
        <li>
           <a href="<?= lista[i].descarga ?>"><?= lista[i].title  ?></a> - <a href="<?= lista[i].vision ?>"> VER </a>
        </li>
        <ul>
           <li><?= lista[i].description ?></li>
        </ul>
        <? } ?>
    </ol>
  </body>
</html>

2 个答案:

答案 0 :(得分:2)

为了您的信息:一种创建特殊&#34;下载为pdf&#34;的方法链接。使用这个:

https://docs.google.com/feeds/download/documents/export/Export?id=*documentId*&exportFormat=pdf

这很复杂但有效。

答案 1 :(得分:1)

我测试了你的代码并遇到了一些问题,但我终于让它工作了......

getDownloadUrl()似乎仅为实际可以下载的文件返回一个值,即不是Google文档,电子表格的文件......但是&#34;普通文件&#34; (如果我敢用这个词)作为jpg,pdf,doc等等。

我在文档中没有提到这一点,但也许我没有很好地搜索。

无论如何,这是我用于测试的代码的简化版本,我在这里检查的文件夹包含3个Google doc文件和jpg图像,我只获得了图像文件的downloadUrl。

index.htmldoGet()未更改)

function getRecFol(folId){
   var l = [];
   var fol = DriveApp.getFolderById('0B3qSFxxxxxxxxxxU3a2VFR2M');
   var arch = fol.getFiles();

   while (arch.hasNext()){
      var a = arch.next();
//      Logger.log(a.getId());
      l.push(a.getId());    
   }// fin primera parte

   return l;
}
/* TIPO PARA EL OBJETO CON LA INFORMACION PARA EL HTML */
function listedFile(id,title,type,description,folder,update,url,download){
   this.id = id;
   this.title = title;
   this.type = type;
   this.description = description;
   this.folder = folder;
   this.update = update;
   this.url = url;
   this.download = download;
}

function getData(){

   var listaF = getRecFol('Idfolderer');
   var listaO = [];
   for (var i = 0; i < listaF.length ;i++){
   var f = DriveApp.getFileById(listaF[i]);
   var o = new listedFile(listaF[i],f.getName(),f.getMimeType(),f.getDescription(),f.getParents(),f.getLastUpdated(),f.getUrl(),f.getDownloadUrl());
   Logger.log(JSON.stringify(o));
//   Logger.log("f.getDownloadUrl() = "+f.getDownloadUrl());
   listaO.push(o);  
 }
 return listaO;
}

有关信息,这里是生成的日志(有点难以阅读,我同意^^),我们可以看到只有第一个项目具有downloadUrl的值。 enter image description here