嗨,我正在徘徊,在我的驱动器中制作一些更加美观的可搜索文件列表。
我制作了一个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>
答案 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.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的值。