【问题标题】:Get Sheet By Name按名称获取工作表
【发布时间】:2018-07-29 18:37:28
【问题描述】:

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

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)
  }
}

调试 onEdit() 时显示 setDataValid(range, sourceRange) 中的 sourceRange 为空。由于范围在我的工作表“本地”中,我试图将 getActiveSpreadsheet() 更改为按名称获取电子表格。谁能帮忙?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    var sheet = SpreadsheetApp.getActive().getSheetByName('Local')
    

    【讨论】:

      【解决方案2】:

      很简单,只需按名称获取工作表,语法如下。

          var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
      

      【讨论】:

      • getActivegetActiveSpreadsheet 是同义词。首选前者,因为后者与getActiveSheet 过于相似,后者不返回Spreadsheet 对象。
      • 我不再相信这是真的。 getActiveSpreadsheet().getSheetByName(xxx) 当前返回错误。 getActive().getSheetByName() 工作。
      【解决方案3】:

      请检查声明

      var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
      

      这应该是返回 null 的那个。原因请看official documentation here

      var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Local!TaxRates')
      

      应该得到范围。

      【讨论】:

      • 谢谢。但我需要 getRangeByName 值取决于我刚刚编辑的单元格中的值
      • 使用 getRangeByName 的参数来包含您的工作表名称和具有命名范围名称的单元格值。 var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Local!'+aCell.getValue())
      • 仍然像这样返回参数不能为空:范围(第 2 行,文件“代码”)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多