获取谷歌电子表格单元格的图像URL。

问题描述 投票:1回答:2

我有一个Google电子表格,每行的第2列和第3列都有一张图片,我正试图将所有的电子表格数据记录到控制台(目前)。 我在访问每个单元格内的图片时遇到了麻烦,因为 getValue() 函数不会返回图片的源地址。 所有的图片都是通过以下方法插入到电子表格中的 =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。 我不确定这是否可能,因为字符串看起来像是谷歌脚本中的原始数据类型。

image url google-apps-script google-sheets
2个回答
3
投票

Range.getValue() 返回一个单元格的计算值,在本例中是一个图像,而不是一个URL。正如你所发现的,你可以使用 getFormula() 来获取创建图像的公式。您可以使用正则表达式从公式字符串中提取图像 URL。

function getImageUrl(formula) {
  var regex = /=image\("(.*)"/i;
  var matches = formula.match(regex);
  return matches ? matches[1] : null;
}

如果 URL 是由另一个单元格或公式计算出来的,这个方法就不起作用了,但是对于你所列出的简单情况,它应该是有效的。


-1
投票

使用查找和替换Edit > 查找和替换。

在 "查找和替换 "框中勾选 "还在公式中搜索"。

© www.soinside.com 2019 - 2024. All rights reserved.