使用Google Docs API从Google Drive插入图片

3
我想知道是否有可能获取存储在Google Drive中的图像的URI。
我尝试过以下内容:
Drive API:GET https://www.googleapis.com/drive/v2/files/{fileId}
(使用Google Docs batchUpdate ReplaceImageRequest替换图像) uri = file["selfLink"] => "Invalid requests[0].replaceImage: Access to the provided image was forbidden." uri = file["webContentLink"] => "Invalid requests[0].replaceImage: There was a problem retrieving the image. The provided image should be publicly accessible, within size limit, and in supported formats." uri = file["alternateLink"] => (见上文) uri = file["embedLink"] => (见file["webContentLink"])
我正在尝试使用这些属性 - 希望Docs API自动解释drive链接。但这可能只是一厢情愿;因为它当然没有起作用。
1个回答

3
我认为你的目标如下:
  • 您想使用Google Docs API中documents.batchUpdate的方法替换图像。
  • 您想要使用Google Drive上的图像文件进行此操作。

问题和解决方案:

当使用Docs API将图像放入Google文档时,似乎图像的URL是外部URL。因此,在您的情况下,可以使用webContentLink的URL。但是需要将文件以“允许任何拥有链接的人”查看者身份公开共享。我认为您出现问题的原因是这个。所以请按照以下步骤进行。

  1. 请将图像文件作为“允许任何拥有链接的人”查看者进行公开共享。
  2. 请使用共享图像的webContentLink URL请求batchUpdate。

注意事项:

  • 本回答假设您已经能够使用Docs API获取和放置Google文档的值。请注意这一点。
  • 很遗憾,我无法理解您实际的请求正文。当您像上面修改时,如果出现其他错误,请提供请求主体的详细信息。通过这种方式,我希望确认一下。

参考资料:


这真的有效。我很感激!没想到这么简单! - Angelo DeLuca
@Angelo DeLuca 谢谢您的回复。我很高兴您的问题得到了解决。也谢谢您。 - Tanaike
1
@Tanaike 很好的回答。我需要类似的东西,根据您发布的链接 ReaplacingImageRequest,我可以看到我可以给它一个 imageObjectId,它将被提供的 URL 中的 img 替换。这正是我需要做的。然而,文档没有说明如何识别或设置我想要替换的图像的 imageObjectId。我怎么知道(或定义)这个 ID? - Rasmus Puls
@RasmusPuls 我有完全相同的问题,但我找不到答案。你找到了吗? - dantebarba
1
@dantebarba 是的,我做到了!或者说我想出了一个解决方法,我非常满意。在我的模板文档中,我左键单击图像,然后选择“alt text”,这使我可以添加一些独特的自定义标识符。在我的后端服务中,我使用documents.get获取完整的文档内容,然后爬取整个文档,匹配我的唯一的alt文本标识符,当我找到该对象时,我可以获取图像对象ID。如果您需要代码示例,请告诉我,然后我可以将其发布到我的博客并发送给您链接。 - Rasmus Puls

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接