>

안녕하세요. 드라이브에서 더 아름답고 검색 가능한 파일 목록을 만들려고 방황하고 있습니다.

나는 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>


  • 답변 # 1

    코드를 테스트 한 결과 몇 가지 문제가 있었지만 마침내 작동하게되었습니다 ...

    getDownloadUrl() 인 것 같습니다  실제로 다운로드 할 수있는 파일 (예 : Google 문서, 스프레드 시트는 아니지만 "일반 파일"(단어를 사용하는 경우))의 파일 만 jpg, pdf, doc 등으로 반환합니다.

    문서에서 언급을 찾지 못했지만 검색이 잘되지 않았을 수 있습니다.

    어쨌든, 여기 테스트에 사용한 간단한 코드 버전이 있습니다. 여기서 검사하는 폴더에는 3 개의 Google 문서 파일과 jpg 이미지가 포함되어 있으며 이미지 파일에 대해서만 downloadUrl을 얻습니다.

    ( index.html  그리고 doGet()  변경되지 않음)

    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에 대한 값을 가지고 있음을 알 수있는 결과 로그 (약간 읽기 어렵지만 동의합니다 ^^)가 있습니다.

  • 답변 # 2

    귀하의 정보 :"pdf로 다운로드"링크를 만드는 방법. 이것을 사용하십시오 :

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

    복잡하지만 작동합니다.

  • 이전 scala - Circe를 사용하여 동적 디코딩을 수행하는 방법은 무엇입니까?
  • 다음 텍스트 파일에서 데이터를 읽고 함수에 사용하기 위해 C 프로그램에 저장하는 방법은 무엇입니까?