按名称获取表格

Mic*_*ijk 19 google-sheets google-apps-script

我正在尝试使用以下公式:

function setDataValid(range, sourceRange) {
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
  range.setDataValidation(rule);
}

function onEdit() {
  var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var aColumn = aCell.getColumn();

  if (aColumn == 2 && SpreadsheetApp.getActiveSheet().getName() == 'Local' ) {
    var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
    var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
    setDataValid(range, sourceRange)
  }
}
Run Code Online (Sandbox Code Playgroud)

调试onEdit()时,它显示setDataValid(range,sourceRange)中的sourceRange为null.由于范围在我的工作表'Local'中,我试图将getActiveSpreadsheet()更改为按名称获取电子表格.有谁可以提供帮助?

小智 38

在电子表格中按名称使用获取工作表:

__CODE__

  • 它返回以下错误:“ TypeError:在对象Sheet中找不到函数getRangeByName。(第12行,文件“ Code”)” (4认同)

Nav*_*mad 8

它非常简单,只需按名称获取工作表,语法如下所示。

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
Run Code Online (Sandbox Code Playgroud)