1

我在我的 Google Drive 中保存了一张图片,我希望我的脚本将该图片插入到电子表格中。但是,当我使用照片的 Google Drive URL 调用InsertImage(url x,x)时,出现错误:

We're sorry, a server error occurred. Please wait a bit and try again. 

如何将此图像插入电子表格?

4

3 回答 3

1

无法通过 InsertImage 使用 Google Drive 上图像的 URL。

有一个悬而未决的问题,多年来一直是功能请求。给它加星标以接收更新。

问题 145:insertImage() 不适用于存储在谷歌文档中的图像

您需要将图像托管在具有稳定 URL 的外部服务器上。

于 2013-05-10T19:06:22.537 回答
0

实际上,您可以使用 Advanced Drive SDK 来获取您需要的File 对象的任何元数据,例如,包括 selfLink 或 thumbnailLink。

我写了一个GitHub Gist从我们保存在 Google Drive 上的图像文件中检索缩略图 URL,并根据基于工作表中部件号的文件名模式将它们作为图像公式自动插入到电子表格中。

获得 URL 后,您可以使用它构建一个 =IMAGE(url) 公式将图像直接插入到单元格中,这可能对您更有用,或者您可以使用insertImage()函数将图像插入到文件作为那些浮动覆盖的东西之一。您可以使用相同的方法来获取二进制 blob,如果您希望插入图像数据本身,而不仅仅是对其的 URL 引用,但这不适用于公式(仅使用insertImage() 函数的覆盖, blob 版本)。以下是Google 第 4344期中如何使用 UrlFetchApp 从文件中获取图像缩略图的示例:

function getThumbnail(fileId) {
  var file = Drive.Files.get(fileId);
  return UrlFetchApp.fetch(file.thumbnailLink).getBlob();
}

如果您只想要链接,只需离开 getBlob() 函数。如果您想要完整大小的图像,请尝试使用 selfLink 属性。如果您想了解更多详细信息,请参阅我的Gist

这绝对是一种解决方法,所以我不知道它是否会继续工作,或者谷歌是否会在未来最终提供一个合理的实现。但是请注意,您需要在脚本文件中的 Resources : Advanced Google services 以及Developers Console中激活 Drive SDK 。如果不起作用,请确保 Script 项目中的项目 ID 与控制台中与项目关联的 ID 匹配。我必须在控制台中实际创建一个新项目并重置 ID 以匹配脚本。

于 2015-02-14T01:05:01.827 回答
-1

实际上这很容易做到。在 Google 驱动器上创建一个公共文件夹,将图像放在那里,然后使用http://googledrive.com/folders_id/image_name.jpg来获取它。告诉我它是否不起作用

于 2013-05-10T22:30:33.623 回答