[英]Getting a Google Spreadsheet Cell's Image URL
我有一个 Google 电子表格,每行的第 2 和第 3 列都有一个图像,我正在尝试将所有电子表格数据记录到控制台(目前)。 我在访问每个单元格中的图像时遇到问题,因为getValue()
函数不会返回图像的源 url。 使用=image("http://imagesource.com",3)
将所有图像插入到电子表格中。 到目前为止,这是我从 Google 提供的默认 readRows 函数中编辑的内容:
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var numCols = rows.getNumColumns();
for (var i = 2; i <= numRows - 1; i++) {
for (var j = 1; j <= numCols; j++) {
// columns 2 and 3 always contain images
if (j == 2 || j == 3) {
// gets the google spreadsheet url, not the original source url
// of the image contained in the cell like I want it to
var imgUrl = rows.getCell(i, j).getDataSourceUrl();
Logger.log("[img]" + imgUrl + "[/img]");
} else {
var cellData = rows.getCell(i, j).getValue();
Logger.log(cellData);
}
}
}
}
编辑:看起来我可以使用getFormula()
返回一个看起来像=image("http://imagesource.com",3)
的字符串,但这仍然给我留下了操纵字符串以仅包含 URL 的问题。 我不确定这是否可能,因为字符串看起来像是谷歌脚本中的原始数据类型。
Range.getValue()
返回单元格的计算值,在本例中是图像,而不是 URL。 正如您所发现的,您可以使用getFormula()
来获取创建图像的公式。 您可以使用正则表达式从公式字符串中提取图像 URL。
function getImageUrl(formula) {
var regex = /=image\("(.*)"/i;
var matches = formula.match(regex);
return matches ? matches[1] : null;
}
如果 URL 是从另一个单元格或公式计算的,这将不起作用,但它应该适用于您列出的简单情况。
使用查找和替换编辑 > 查找和替换
并检查也在查找和替换框中的公式中搜索
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.