【发布时间】:2021-01-21 11:14:48
【问题描述】:
我的目标是从返回其内容(即 blob)的端点请求图像并将其插入到单元格中。请注意,该图像尚未保存在任何地方,因此它没有 URL。如果我是一名 JavaScript Web 开发人员,我可以使用 Image 对象并将其 src 设置为 URL.createObjectURL(...) 的结果。但我需要在基于 JS 的 Google Script 中解决这个问题。
在 Google Script 文档中有这个例子:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var blob = Utilities.newBlob(binaryData, 'image/png', 'MyImageName');
sheet.insertImage(blob, 1, 1);
我希望这段代码从端点获取图像并将其插入单元格 A1:
function onOpen() {
var SPREADSHEET_URL = 'MY_SPREADSHEET_URL';
var SHEET_NAME = 'SHEET_NAME';
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = ss.getSheetByName(SHEET_NAME);
var response = UrlFetchApp.fetch(
"ENDPOINT_URL").getContent();
var image = Utilities.newBlob(response, "image/jpeg", "img.jpeg");
sheet.insertImage(image, 1, 1);
}
但是,我收到一条错误消息,指出我的图像变量的类型(即 Blob)不受支持。
不支持 blob 格式。在打开时。
official docs 表示方法 newBlob 返回一个 Blob 对象。 我错过了什么?
【问题讨论】:
-
我以为
The blob format is unsupported.的错误信息,从ENDPOINT_URL的URL中检索到的数据可能不是图片数据。那么,在你的情况下,请问ENDPOINT_URL是不是图片的直接链接? -
我也不确定网页中是否确实存在没有 URL 的图像。我想被证明是错误的并学习新的东西,但我还没有看到没有网址的图像.. 但是你的问题 100% 取决于这个
"ENDPOINT_URL"是什么所以我认为你不能在不重新获得答案的情况下得到答案有关它的更多信息。 -
我的文字表述有些混乱,对此深表歉意。我的意思是 ENDPOINT_URL 是发出 GET 请求的 URL,服务器生成图像并将其作为 InputStreamResource 返回。图像 URL 是指存储图像的 URL(例如,在 AWS S3 上)。唉,只需使用 ENDPOINT_URL 调用 insertImage 方法就可以解决我的问题。
标签: google-apps-script google-sheets