Skript zum Ändern der einzelnen Textfarbe innerhalb einer Zelle

10

Ich habe eine Google-Tabelle mit Hunderten von Mitarbeiternamen für einen Zeitplan. Jede Zelle hat mehrere Namen in dieser Zelle, die folgendermaßen aussehen:

First Last
First Last
First Last

First Last
First Last

Viele der Namen sind rot gefärbt, während die anderen schwarz bleiben. Ich verwende ein Skript, um die zusätzlichen Zeilenumbrüche zu entfernen, um die Namen zu reduzieren (viele von ihnen werden mithilfe von Suchen / Ersetzen für Dinge wie freie Tage entfernt, was zu einem leeren Zeilenumbruch führt):

First Last
First Last
First Last
First Last
First Last

Das Problem ist, dass beim Ausführen dieses Skripts die Schriftart der roten Namen in schwarz geändert wird. Ich kann keine Möglichkeit finden, eine for-Schleife zu schreiben, um diese einzelnen Zeilen in der Zelle wieder rot zu machen. Entweder ist der gesamte Text in der Zelle rot, oder der HTML-Code gibt an, dass er rot sein sollte.

Irgendwelche Ideen, wie ich diese Arbeit machen könnte?

David
quelle
2
Die teilweise Formatierung von Zelleninhalten wurde kürzlich in Google Sheets hinzugefügt und ist nicht wirklich in die übrige Tabellenkalkulationslogik integriert. Insbesondere kennen die Formeln und Skripte eine solche Formatierung nicht und können sie nicht anwenden. Ihre Ausgabe enthält keine solche Formatierung.

Antworten:

2

Derzeit gibt es nur zwei Arten von Bereichseigenschaften, die den Inhalt verarbeiten: Werte und Formeln. Wenn Sie den Zelleninhalt mit ihnen ändern, wird leider das Format entfernt, das auf Teile des Inhalts angewendet wird.

In diesem Fall können Benutzer im Google Apps Script Issue Tracker nach einer Funktionsanforderung suchen und falls es keine gibt, die eine übermittelt. Wenn für die gesuchte Funktion bereits eine Funktionsanforderung vorhanden ist, markieren Sie diese, da das Google Apps Script-Team die Anzahl der Personen berücksichtigt, für die eine Funktionsanforderung mit einer Priorität versehen wurde.

Bitte markieren Sie die folgende Funktionsanforderung

Problem 6000: Behandeln Sie Teile des Zelleninhalts programmgesteuert

Rubén
quelle
2

UPDATE: Die in diesem Beitrag erwähnten Methoden sind jetzt in den Versionshinweisen vom 22. Januar 2019 enthalten

Jemand fand undokumentierte Methoden und gemeinsame Beispiele, die für diese Frage relevant sind.

Von Kommentar 21 bis Behandeln von Teilen des Zellinhalts, die in meiner vorherigen Antwort programmgesteuert erwähnt wurden .

Sie können auch das aktuelle Format einer Zelle abrufen, in dem verschiedene Teile des Textes der Zelle unterschiedliche Stile haben:

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

Wahrscheinlich werden die neuen Methoden diese Woche zuerst in Google Cloud Next 18 San Francisco und dann im Google Developers Blog angekündigt .

verbunden

Rubén
quelle