Obtenez Feuille Par Nom
Je vais essayer d'obtenir la formule suivante pour le travail:
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)
}
}
Lors du débogage onEdit (), il montre que sourceRange dans setDataValid(gamme, sourceRange) est nulle. Comme la plage est dans ma feuille "Local" je suis en train de changer la getActiveSpreadsheet() pour une feuille de calcul de par leur nom. Quelqu'un qui peut m'aider ?
Vous devez vous connecter pour publier un commentaire.
Utiliser get feuille par son nom sur la feuille de calcul:
var sheet = SpreadsheetApp.getActive().getSheetByName('Local')
Veuillez consulter la déclaration de
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
Ce qui devrait retourner null. Pour la cause de regarder la la documentation officielle ici.
À l'aide de
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Local!TaxRates')
doit obtenir la gamme.var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Local!'+aCell.getValue())
Son très simple il suffit d'obtenir la feuille par son nom, la syntaxe est comme suit par la documentation.
getActive
etgetActiveSpreadsheet
sont synonymes. Préférez l'ancienne que celle-ci est trop semblable àgetActiveSheet
, qui ne renvoie pas unSpreadsheet
objet.