Google apps script 如何使用谷歌应用程序脚本显示谷歌硬盘图像?

Google apps script 如何使用谷歌应用程序脚本显示谷歌硬盘图像?,google-apps-script,Google Apps Script,如果我使用谷歌教程页面中的以下内容来加载图像,效果很好: //第一个谷歌涂鸦! app.add(app.createImage(“http://www.google.com/logos/googleburn.jpg")); 但如果我试图从自己的谷歌文档中获取URL,则图像无法加载: var image; var url; var files = DocsList.getAllFiles(); for (var i = 0; i < files.length; i++

如果我使用谷歌教程页面中的以下内容来加载图像,效果很好:

//第一个谷歌涂鸦! app.add(app.createImage(“http://www.google.com/logos/googleburn.jpg"));

但如果我试图从自己的谷歌文档中获取URL,则图像无法加载:

var image;
var url;    
var files = DocsList.getAllFiles();        
for (var i = 0; i < files.length; i++) {  
    url = files[i].getUrl();  
    app.add(app.createImage(image));  
    app.add(app.createLabel(url));  
}
var图像;
var-url;
var files=DocsList.getAllFiles();
对于(var i=0;i
返回的URL不是直接指向图像,而是某种Google文档容器:


是的,您不能使用谷歌文档中存储的图像。Imgae URL应该是指向该图像的热链接(直接链接)

app.createImage('YOUR_IMAGE_HOT_LINK_URL');

您可以将图像存储为Google站点页面的附件,然后使用Google应用程序脚本的站点API访问它

从经过验证的URL在UiApp中显示图像是不可能的,即使是从谷歌服务(如网站、文档等)中也是如此。实际上你可以这样做,但我担心这不是很可靠。当您单击查看容器中的下载按钮时,该链接将起作用。但是,您必须公开该图像。或者将其分享给所有能够查看工作表或文档的用户。

我知道这里有一个公认的答案,但由于UiApp的不受欢迎,它不再真正准确。下面是一个脚本,用于读取给定的Google驱动器目录,并通过带有现代应用程序脚本API的资产对象将每个公开可用的图像传递给模板

function getAssets(driveDir) {
    var folders = DriveApp.getFoldersByName(driveDir);
    var folder = (folders.hasNext())? folders.next() : false ;
    var assets = {};
    if(folder){
        var files = folder.getFiles();
        while (files.hasNext()) {
            var file = files.next();
            var fileName = file.getName();
            assets[fileName] = 'https://drive.google.com/uc?export=view&id=' + file.getId();
        }
    }
    return assets;
}
doGet()函数应该包括资产

function doGet(e) {
    var form = HtmlService.createTemplateFromFile('form.html');
    form.assets = getAssets('Your-drive-folder-name');

    return form.evaluate();

}
最后,在HTML模板中,您可以通过以下代码访问您的资产:

 <img src="<?= assets.fileName ?>" />
“/>

再次请记住,这些资产必须是公开的,才能允许图像出现在您的google站点/应用程序脚本/任何东西上使用File.setSharing API方法,但我发现设置上传权限并不是一件很麻烦的事。

谢谢,如果我们不能访问同一生态系统中的资源,这似乎是谷歌应用程序的一个非常大的限制——这意味着我们必须将它们放在沙箱之外。发布问题后的24小时内,情况正在发生变化在上,Google Docs已将Google Drive添加到Google Document和Google Drawing的“插入图像”对话框中。因此,Google Drive似乎正在与Google Docs进行更紧密的集成,下一步可能是让Google Apps脚本执行类似操作,以解决原来的问题。谢谢,但这对同事(工程师)没有帮助他们只是将图像放入Google Drive,而站点需要能够拾取图像。这就是需要通过编程方式从Google Drive访问图像的原因。使用另一个脚本将图像从Google Drive移动/复制到Google站点页面怎么样?您可以按标签进行筛选,并将所有图像自动放入某个标签中lly将其作为网站页面的附件从2019年11月起生效。我能够在Google Drive中放置一个GIF文件,将其共享,使用上面的代码获取查看URL,并将其嵌入到本地HTML文件中。