wake-up-neo.net

Blatt nach Namen abrufen

Ich versuche die folgende Formel zum Laufen zu bringen:

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

Beim Debuggen von onEdit () wird angezeigt, dass sourceRange in setDataValid (range, sourceRange) null ist. Da sich der Bereich in meinem Blatt 'Local' befindet, versuche ich, das getActiveSpreadsheet () in eine Get-Tabelle nach Namen zu ändern. Wer kann helfen?

7

Verwenden Sie get sheet by name in der Tabelle:

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

Bitte überprüfen Sie die Aussage

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

Dies sollte der Wert sein, der null zurückgibt. Zur Ursache siehe offizielle Dokumentation hier .

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

sollte die Reichweite bekommen.

1
Suhail Ansari