获取Google电子表格单元格的图片网址

时间:2014-05-20 02:57:31

标签: image url google-apps-script google-sheets

我有一个Google电子表格,每行的第2和第3列都有图片,我正在尝试将所有电子表格数据记录到控制台(暂时)。我在访问每个单元格中的图像时遇到问题,因为getValue()函数不会返回图像的源URL。所有图像都使用=image("http://imagesource.com",3)插入电子表格中。这是我到目前为止所做的,从谷歌提供的默认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。我不确定这是否可行,因为字符串看起来像是google脚本中的原始数据类型。

2 个答案:

答案 0 :(得分: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 :(得分:-1)

使用查找并替换 编辑>查找并替换

并选中也在搜索和替换框中的公式内搜索