我有一个WebApp,它将工作网站数据收集到Google表格电子表格中,并将工作网站照片收集到我为每个作业创建的Google云端硬盘文件夹中。必须在Google表格的单元格中查看部分(但不是全部)照片,以便可以将作业单打印为作业完成报告的一部分。
我使用Google Picker将文件上传到特定于工作站点作业的文件夹。我不确定从那里使用它们的最佳方法。
我已经成功设置了像=IMAGE("hllp://i.imgur.com/yuRheros.png", 4, 387, 422)
这样的单元格公式,但只能从网络上其他地方提取图像。
像这样使用the permalink trick =IMAGE("hllp://drive.google.com/uc?export=view&id=0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422)
不起作用;我认为它不会容忍Google在这些链接上执行的网址重定向。
我读过的另一种方法是将实际的blob写入单元格,但尚未尝试过。但是,我怀疑我将失去对后续报告格式的控制权。
也许我需要在几个单元格中以多种方式记录图像规范:
是否有一种编程方式来获取Google重定向的图像最终URL,相当于打开图像并手动复制URL?一个人可以永远相信它,还是会随着时间而改变?
更新:我错了= IMAGE(“hllp://drive.google.com/uc?export = view&id = 0B8xy-TdDgbjiFoOldUlLT091NXM”,4,387,422)无效。即使电子表格的所有者也是图像的所有者,也必须将图像共享给“具有链接的任何人”。
我将继续录制1.hash key和2.dimensions作为我的解决方案,但我很高兴知道是否有其他人有更好的主意。
我制作了一个两行脚本来使用Google云端硬盘中图片的共享链接。
function DRIVE_IMAGE(link){
return link.replace("open?", "uc?export=download&");
}
使用脚本:
=IMAGE(DRIVE_IMAGE("COPIED_LINK"))
假设您在驱动器中获得了图像的ID,您可以使用如下代码在工作表的最后一行插入图像(该网址与平时略有不同):
...
var img = DriveApp.getFileById('image ID');// or any other way to get the image object
var imageInsert = sheet.getRange(lastRow+1, 5).setFormula('=image("https://drive.google.com/uc?export=view&id='+img.getId()+'")');// in this example the image is in column E
sheet.setRowHeight(lastRow+1, 80);// define a row height to determine the size of the image in the cell
...
我建议您仔细检查您要显示的文件的共享属性:它们必须设置为“公共”移动到也是“公共共享”的文件夹中
我们使用图片构建了大量工作表,并使用Google相册存档{https://get.google.com/albumarchive/ ...}中提供的静态链接,而不是谷歌照片中的动态链接。存档中的链接通常以“-rw”结尾,这限制了与其共享文档的某些人的查看能力。从链接末尾删除“-rw”似乎有所帮助。