Skrypt do zmiany indywidualnego koloru tekstu w komórce

10

Mam arkusz kalkulacyjny Google z setkami nazwisk pracowników na harmonogram. Każda komórka ma wiele nazw w tej komórce, które wyglądają tak:

First Last
First Last
First Last

First Last
First Last

Wiele nazw jest oznaczonych kolorem czerwonym, podczas gdy inne pozostają czarne. Korzystam ze skryptu, aby usunąć dodatkowe znaki nowej linii, aby zwinąć do nich nazwy (wiele z nich jest usuwanych za pomocą funkcji znajdź / zamień dla takich rzeczy, jak dni wolne, co powoduje powstanie pustej nowej linii):

First Last
First Last
First Last
First Last
First Last

Problem polega na tym, że po uruchomieniu tego skryptu czerwone nazwy mają czcionkę zmienioną na czarną. Nie mogę znaleźć sposobu na napisanie pętli for, aby zmienić te pojedyncze linie w komórce z powrotem na czerwoną. W efekcie cały tekst w komórce jest czerwony lub kod HTML wskazuje, że powinien być czerwony.

Jakieś pomysły na to, jak sprawić, by to działało?

David
źródło
2
Częściowe formatowanie zawartości komórki jest najnowszym dodatkiem do Arkuszy Google i nie jest tak naprawdę zintegrowane z resztą logiki arkusza kalkulacyjnego. W szczególności formuły i skrypty nie są świadome takiego formatowania i nie mogą go zastosować. Ich dane wyjściowe nie zawierają takiego formatowania.

Odpowiedzi:

2

W tej chwili istnieją tylko dwa rodzaje właściwości zakresu do obsługi jego zawartości: wartości i formuły. Niestety zmiana zawartości komórki za pomocą nich usuwa format zastosowany do części zawartości.

W takim przypadku użytkownicy mogą zajrzeć do narzędzia Google Apps Script Issue Tracker, aby wyszukać żądanie funkcji, a jeśli nie ma jednego, prześlij je. Jeśli już istnieje żądanie funkcji, której szukasz, oznacz ją gwiazdką, ponieważ zespół Google Apps Script bierze pod uwagę ich liczbę.

Proszę zaznaczyć następujące żądanie funkcji

Problem 6000: Obsługa części zawartości komórki programowo

Ruben
źródło
2

AKTUALIZACJA: Metody wymienione w tym poście są teraz uwzględnione w informacjach o wersji z 22 stycznia 2019 r

Ktoś znalazł nieudokumentowane metody i udostępnił przykłady istotne dla tego pytania.

Od komentarza 21 do Obsługa części zawartości komórki programowo wymienionych w mojej poprzedniej odpowiedzi .

Możesz również uzyskać bieżący format komórki, w której różne części tekstów komórki mają różne style:

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

Prawdopodobnie nowe metody zostaną ogłoszone w tym tygodniu najpierw w Google Cloud Next 18 San Francisco, a następnie na Blogu Google Developers.

Związane z

Ruben
źródło