我的目标是从返回其内容(即blob)的端点请求图像并将其插入单元格。注意,图像没有在任何地方持久化,因此它没有URL。如果我是JavaScript web开发人员,我可以使用Image对象并将其src设置为URL.createObjectURL(…)的结果。但我需要解决这个问题在一个谷歌脚本,基于JS。
在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格式。在onOpen。
官方文档说newBlob方法返回一个Blob对象。我错过了什么?
您可以尝试使用HTTPResponse.getAs(contentType)
:
var response = UrlFetchApp.fetch("ENDPOINT_URL").getAs('image/jpeg')
返回Blob。然后用Sheet插入到Sheet中。insertImage:
sheet.insertImage(response, 1, 1);
并跳过Blob的创建。但是正如注释告诉你的那样,对象的有效性将取决于'ENDPOINT_URL'
中生活着什么