Compartir a través de


ExcelScript.DataValidationRule interface

Una regla de validación de datos contiene diferentes tipos de validación de datos. Solo puede usar uno de ellos a la vez según .ExcelScript.DataValidationType

Propiedades

custom

Criterios de validación de datos personalizados.

date

Criterios de validación de datos de fecha.

decimal

Criterios de validación de datos decimales.

list

Criterios de validación de datos de lista.

textLength

Criterios de validación de datos de longitud de texto.

time

Criterios de validación de datos de tiempo.

wholeNumber

Criterios de validación de datos de número entero.

Detalles de las propiedades

custom

Criterios de validación de datos personalizados.

custom?: CustomDataValidation;

Valor de propiedad

Ejemplos

/**
 * This script adds data validation to a range.
 * The validation prevents duplicate entries within that range.
 */
function main(workbook: ExcelScript.Workbook) {
  // Get the range "B2:B20".
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getRange("B2:B20");

  // Set data validation on the range to prevent duplicate, non-blank entries.
  const dataValidation = range.getDataValidation();
  dataValidation.setIgnoreBlanks(true);
  const duplicateRule : ExcelScript.CustomDataValidation = { 
    formula: "=COUNTIF($B$2:$B$20, B2)=1"
  };
  dataValidation.setRule({
    custom: duplicateRule
  });
}

date

Criterios de validación de datos de fecha.

date?: DateTimeDataValidation;

Valor de propiedad

decimal

Criterios de validación de datos decimales.

decimal?: BasicDataValidation;

Valor de propiedad

list

Criterios de validación de datos de lista.

list?: ListDataValidation;

Valor de propiedad

Ejemplos

/**
 * This script creates a dropdown selection list for a cell.
 * It uses the existing values of the selected range as the choices for the list.
 */
function main(workbook: ExcelScript.Workbook) {
    // Get the values for data validation.
    const selectedRange = workbook.getSelectedRange();
    const rangeValues = selectedRange.getValues();

    // Convert the values into a comma-delimited string.
    let dataValidationListString = "";
    rangeValues.forEach((rangeValueRow) => {
        rangeValueRow.forEach((value) => {
            dataValidationListString += value + ",";
        });
    });

    // Clear the old range.
    selectedRange.clear(ExcelScript.ClearApplyTo.contents);

    // Apply the data validation to the first cell in the selected range.
    const targetCell = selectedRange.getCell(0, 0);
    const dataValidation = targetCell.getDataValidation();

    // Set the content of the dropdown list.
    let validationCriteria : ExcelScript.ListDataValidation = {
        inCellDropDown: true,
        source: dataValidationListString
    };
    let validationRule: ExcelScript.DataValidationRule = {
        list: validationCriteria
    };
    dataValidation.setRule(validationRule);
}

textLength

Criterios de validación de datos de longitud de texto.

textLength?: BasicDataValidation;

Valor de propiedad

time

Criterios de validación de datos de tiempo.

time?: DateTimeDataValidation;

Valor de propiedad

wholeNumber

Criterios de validación de datos de número entero.

wholeNumber?: BasicDataValidation;

Valor de propiedad

Ejemplos

/**
 * This script creates a data validation rule for the range B1:B5.
 * All values in that range must be a positive number.
 * Attempts to enter other values are blocked and an error message appears.
 */
function main(workbook: ExcelScript.Workbook) {
  // Get the range B1:B5 in the active worksheet.
  const currentSheet = workbook.getActiveWorksheet();
  const positiveNumberOnlyCells = currentSheet.getRange("B1:B5");

  // Create a data validation rule to only allow positive numbers.
  const positiveNumberValidation: ExcelScript.BasicDataValidation = {
    formula1: "0",
    operator: ExcelScript.DataValidationOperator.greaterThan
  };
  const positiveNumberOnlyRule: ExcelScript.DataValidationRule = {
    wholeNumber: positiveNumberValidation
  };

  // Set the rule on the range.
  const rangeDataValidation = positiveNumberOnlyCells.getDataValidation();
  rangeDataValidation.setRule(positiveNumberOnlyRule);

  // Create an alert to appear when data other than positive numbers are entered.
  const positiveNumberOnlyAlert: ExcelScript.DataValidationErrorAlert = {
    message: "Positive numbers only",
    showAlert: true,
    style: ExcelScript.DataValidationAlertStyle.stop,
    title: "Invalid data"
  };
  rangeDataValidation.setErrorAlert(positiveNumberOnlyAlert);
}