我已在Google云端硬盘中保存了图片,我希望我的脚本将该图片插入电子表格中。但是,当我使用照片的Google云端硬盘URL致电InsertImage(url x,x)时,收到错误消息:
We're sorry, a server error occurred. Please wait a bit and try again.
如何将此图片插入电子表格?
答案 0 :(得分:1)
使用InsertImage无法在Google云端硬盘上使用图片的网址。
这是一个悬而未决的问题,这是多年来的一项功能要求。明星它接收更新。
Issue 145:insertImage()不适用于存储在Google文档中的图片
您需要将您的图片托管在具有稳定网址的外部服务器上。
答案 1 :(得分:0)
实际上,您可以使用Advanced Drive SDK获取所需的File object元数据,包括例如selfLink或thumbnailLink。
我写了一个GitHub Gist来从我们保存在Google云端硬盘中的图片文件中检索缩略图图片网址,然后根据基于图纸中部件编号的文件名模式自动将它们作为图像公式插入电子表格中。
获得URL后,您可以使用它构建一个= IMAGE(url)公式,将图像直接插入到单元格中,这可能对您更有用,或者您可以使用insertImage()函数将图像作为其中一个浮动叠加内容插入到文档中。您可以使用相同的方法来获取二进制blob,如果您更愿意插入图像数据本身而不仅仅是对其的URL引用,但这对公式不起作用(仅使用insertImage() function, blob version的叠加层)。以下是Google Issue 4344中有关如何使用UrlFetchApp从文件中获取图像缩略图的示例:
function getThumbnail(fileId) {
var file = Drive.Files.get(fileId);
return UrlFetchApp.fetch(file.thumbnailLink).getBlob();
}
如果您只想要链接,请不要使用getBlob()函数。如果您想要完整尺寸的图像,请尝试使用selfLink属性。如果您需要更多详细信息,请参阅我的Gist。
这绝对是一种解决方法,因此我不知道它是否会继续发挥作用,或者Google将来是否会最终提供合理的实施方案。但请注意,您需要在资源:高级Google服务下以及Developers Console下的脚本文件中激活Drive SDK。如果它不起作用,请确保脚本项目中的项目ID与控制台中与项目关联的项目ID匹配。我必须在控制台中实际创建一个新项目并重置ID以匹配脚本。
答案 2 :(得分:-1)
实际上这很容易做到。在Google驱动器上创建一个公用文件夹,将图像放在那里,然后使用http://googledrive.com/folders_id/image_name.jpg来获取它。告诉我它是否不起作用