【问题标题】:Google apps script - get A1 cell notation of each element in an arrayGoogle 应用程序脚本 - 获取数组中每个元素的 A1 单元格符号
【发布时间】:2015-07-06 17:47:30
【问题描述】:

我有一个函数,我想搜索给定的工作表并返回一个包含自定义函数“POPULATE”的单元格数组。该函数当前返回“=POPULATE”的每个实例的字符串数组。

function formulaSearch() {
  var sheet = spreadsheet.getSheetByName('test');
  var range = sheet.getDataRange();
  var values = range.getValues();
  var formulas = range.getFormulas();

  // Search for all cells with the POPULATE function and put them into array
  var cells = [];
  for (var row in formulas) {
    for (var col in formulas[row]) {
      if (formulas[row][col].indexOf("=POPULATE") > -1 ) {
        cells.push(formulas[row][col]);
        Logger.log(cells); 
      } 
    }
  }
  return cells;
}

如何以 A1 表示法返回包含公式的每个单元格的单元格数组?我知道 .getA1Notation() 方法,但我无法将返回数组中的元素转换为 Range 数据类型。

【问题讨论】:

  • formulas[row][col] 只是一个包含单元格公式的String,而不是实际的单元格。

标签: arrays google-apps-script google-sheets


【解决方案1】:

一种方法是从 range 变量中获取单元格,然后从中获取 A1 符号:

for (var row in formulas) {
  for (var col in formulas[row]) {
    if (formulas[row][col].indexOf("=POPULATE") > -1 ) {
      cell = range.getCell(row+1, col+1).getA1Notation();
      cells.push(cell);
      Logger.log(cells); 
    } 
  }
}

编辑:范围不是 0 索引。在 getCell() 中的 row 和 col 中添加了 1。感谢您指出@tsc333!

【讨论】:

  • 我收到错误消息“单元格引用超出范围”,指的是使用 getCell() 方法的行。
  • 解决方案:由于 A1 表示法不是 0 索引,我必须将 1 加到 row 和 col 数组中的每个元素,并使用 var rowNum=Number(row) + 1; 将它们转换为数字然后第 4 行变为 cell = range.getCell(rowNum, colNum).getA1Notation();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多