7

我有一个 WebApp,它将工作地点数据收集到 Google 表格电子表格中,并将工作地点照片收集到我为每个工作创建的 Google Drive 文件夹中。某些(但不是全部)照片必须可以在 Google 表格的单元格中查看,以便可以将工作表打印为作业完成报告的一部分。

我使用 Google Picker 将文件上传到特定于工作站点作业的文件夹。我不确定从那里使用它们的最佳方式。

我已经成功设置了一个单元格公式,例如 =IMAGE("hllp://i.imgur.com/yuRheros.png", 4, 387, 422),但仅限于从网络上其他地方提取的图像。

像这样使用永久链接技巧=IMAGE("hllp://drive.google.com/uc?export=view&id=0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422)是行不通的;我认为它不会容忍谷歌在这些链接上所做的 URL 重定向。

我读过但尚未尝试过的另一种方法是将实际的 blob 写入单元格。但是,我怀疑我将失去对报告后续格式的任何控制。

也许我需要在几个单元格中以多种方式记录图像规范:

  1. 它的 Google Drive 哈希键
  2. 它的尺寸
  3. 它在 imgur.com(或类似网站)中的备用位置
  4. 它的斑点

是否有一种程序化的方式来获取谷歌的图像重定向最终 URL,相当于打开图像并手动复制 URL?可以永远相信它,还是会随着时间而改变?

更新:关于 =IMAGE("hllp://drive.google.com/uc?export=view&id=0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422) 不起作用,我错了。即使电子表格的所有者也是图像的所有者,也必须将图像共享给“知道链接的任何人”。

我将只记录 1.hash 键和 2.dimensions 作为我的解决方案,但我很高兴知道其他人是否有更好的主意。

4

3 回答 3

4

假设您在驱动器中获得了图像的 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
  ...

我建议您仔细检查您尝试显示的文件的共享属性:它们必须设置为“公共”或移动到同样“公开共享”的文件夹中

于 2014-11-07T14:10:24.850 回答
3

我制作了一个两行脚本来使用 Google Drive 中图像的共享链接。

  1. 转到工具 > 脚本编辑器。
  2. 复制、粘贴以下代码
  3. 节省
function DRIVE_IMAGE(link){
  return link.replace("open?", "uc?export=download&");
}

使用脚本:

  1. 在 Google 云端硬盘中复制获取图片的可共享链接(也许您需要将共享偏好设置为在网络上公开)。
  2. 转到 Google 表格单元格。
  3. 输入公式

    =IMAGE(DRIVE_IMAGE("COPIED_LINK"))
    
于 2017-03-15T19:30:17.633 回答
0

我们用图片构建了很多工作表,并使用谷歌相册存档 { https://get.google.com/albumarchive/ ... }中可用的静态链接,而不是谷歌照片中的动态链接。存档中的链接通常以“-rw”结尾,这限制了与文档共享的某些人的查看能力。从链接末尾删除“-rw”似乎有帮助。

于 2019-04-03T12:19:07.207 回答