Script para cambiar el color del texto individual dentro de una celda

10

Tengo una hoja de cálculo de Google con cientos de nombres de empleados para un horario. Cada celda tiene varios nombres dentro de esa celda que se ven así:

First Last
First Last
First Last

First Last
First Last

Muchos de los nombres tienen un código de color rojo, mientras que los demás permanecen en negro. Estoy usando un script para eliminar las nuevas líneas adicionales para contraer los nombres (muchas de ellas se eliminan usando buscar / reemplazar para cosas como días libres, lo que resulta en una nueva línea en blanco):

First Last
First Last
First Last
First Last
First Last

El problema es que, cuando se ejecuta este script, los nombres rojos cambian su fuente a negro. No puedo encontrar una manera de escribir un bucle for para convertir estas líneas individuales dentro de la celda de nuevo a rojo. O termino con todo el texto en la celda rojo, o el código HTML que indica que debería ser rojo.

¿Alguna idea sobre cómo podría hacer que esto funcione?

David
fuente
2
El formateo parcial del contenido de la celda es una adición reciente a las Hojas de cálculo de Google, y no está realmente integrado con el resto de la lógica de la hoja de cálculo. En particular, las fórmulas y los scripts no tienen conocimiento de dicho formato y no pueden aplicarlo. Su salida no lleva ningún formato de este tipo.

Respuestas:

2

En este momento, solo hay dos tipos de propiedades de rango para manejar su contenido: valores y fórmulas. Desafortunadamente, cambiar el contenido de la celda al usarlos elimina el formato aplicado a partes del contenido.

En este caso, los usuarios pueden consultar el Rastreador de problemas de script de Google Apps para buscar una solicitud de función y en caso de que no haya una. Si ya existe una solicitud de función para la función que está buscando, márquela como el número de personas que destacó una solicitud de función es considerada por el equipo de Google Apps Script para priorizarlas.

Destaque la siguiente solicitud de función

Problema 6000: maneje partes del contenido de la celda mediante programación

Rubén
fuente
2

ACTUALIZACIÓN: Los métodos mencionados en esta publicación ahora se incluyen en las notas de la versión del 22 de enero de 2019

Alguien encontró métodos indocumentados y compartió ejemplos relevantes para esta pregunta.

Desde el comentario 21 hasta Manejar partes del contenido celular que se mencionan programáticamente en mi respuesta anterior .

También puede obtener el formato actual de una celda donde las diferentes partes de los textos de la celda están en diferentes estilos:

  var richText = ss.getCurrentCell().getRichTextValue();
  var runs = richText.getRuns();
  for (var i=0; i<runs.length; i++)
  {
    // get the style of this section of text, between startIndex and endIndex
    var run = runs[i];
    var startIndex = run.getStartIndex();
    var endIndex = run.getEndIndex();
    var styleBold = run.getTextStyle().isBold();
  }

Probablemente, los nuevos métodos se anunciarán esta semana primero en Google Cloud Next 18 San Francisco y luego en el Google Developers Blog.

Relacionado

Rubén
fuente