es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una función similar a cuandoElNúmeroEsMenorQue pero para fórmulas?

Estoy tratando de crear una macro que aplique formato condicional basado en el valor de una celda diferente. Es posible hacerlo manualmente ingresando una función, pero no logro hacerlo con Google Apps Script. El código que tengo es el siguiente:

conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, 
  SpreadsheetApp.newConditionalFormatRule()
    .setRanges([spreadsheet.getCurrentCell().offset(0, 0, 1, 12)])
    .whenNumberGreaterThan('=' + spreadsheet.getCurrentCell().offset(0, -2))
    .setBackground('f4c7c3')
    .build());

Falla en la línea de whenNumberGreaterThan porque espera solo un número, no una cadena como la que estoy proporcionando (es decir, una función).

Y desde la interfaz de usuario de Google Sheets puedo crear la función fácilmente como se muestra aquí: image link

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que el método whenNumberGreaterThan espera un número y no una cadena de texto, que es lo que devuelve la llamada a la función spreadsheet.getCurrentCell().offset(0, -2). Para solucionar esto, puedes usar el método getValue() en la celda para obtener su valor numérico antes de pasarlo al método whenNumberGreaterThan.

    Aquí tienes una versión actualizada del código:

    // Obtener el valor numérico de la celda
    var referenceValue = spreadsheet.getCurrentCell().offset(0, -2).getValue();
    
    // Aplicar formato condicional en función del valor de la celda
    conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
    conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, 
      SpreadsheetApp.newConditionalFormatRule()
        .setRanges([spreadsheet.getCurrentCell().offset(0, 0, 1, 12)])
        .whenNumberGreaterThan(referenceValue)
        .setBackground('f4c7c3')
        .build());
    

    Esto ahora debería aplicar formato condicional en función del valor de la celda, tal como lo hace la función aplicada a través de la interfaz de usuario de Google Sheets.

Comments are closed.