Próbuję wyróżnić określone słowa w moim dokumencie Google. Wiem, że mogę zastąpić tekst za pomocą document.replace, ale zastępuje on tylko ciąg, a nie formatowanie. Czy istnieje sposób na zastąpienie ciągu za pomocą kolorowego ciągu za pomocą Google Apps Script?Czy mogę pokolorować określone słowa w dokumencie Google za pomocą Google Apps Script?
Odpowiedz
Jest to lepsze rozwiązanie:
function highlightTextTwo() {
var doc = DocumentApp.openById('<your document id');
var textToHighlight = 'dusty death';
var highlightStyle = {};
highlightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FF0000';
var paras = doc.getParagraphs();
var textLocation = {};
var i;
for (i=0; i<paras.length; ++i) {
textLocation = paras[i].findText(textToHighlight);
if (textLocation != null && textLocation.getStartOffset() != -1) {
textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(), highlightStyle);
}
}
}
Poprzedni Odpowiedź:
Kluczem do sukcesu jest bycie w stanie odwołać się tylko te słowa, które chcesz pokolorować.
Moje rozwiązanie jest:
Get tekst akapitu, który zawiera słowa, które chcesz kolor, usunąć oryginalny akapit, następnie dodać każdy fragment tekstu z powrotem. Jak można dodać każdą część z powrotem appendText zwraca odwołanie do tylko tekst dodał, wtedy można określić jego kolor z setForegroundColor():
function highlightText() {
var doc = DocumentApp.openById('<your document id>');
var textToHighlight = 'dusty death';
var textLength = textToHighlight.length;
var paras = doc.getParagraphs();
var paraText = '';
var start;
for (var i=0; i<paras.length; ++i) {
paraText = paras[i].getText();
start = paraText.indexOf(textToHighlight);
if (start >= 0) {
var preText = paraText.substr(0, start);
var text = paraText.substr(start, textLength);
var postText = paraText.substr(start + textLength, paraText.length);
doc.removeChild(paras[i]);
var newPara = doc.insertParagraph(i, preText);
newPara.appendText(text).setForegroundColor('#FF0000');
newPara.appendText(postText).setForegroundColor('#000000');
}
}
}
myślę, że to możliwe dzięki metodzie setBackgroundColor klasy tekstów w DocumentApp: https://developers.google.com/apps-script/class_text#setBackgroundColor
Musisz odzyskać swoje słowa jako elementy tekstu. W tym celu możesz użyć metody szukania dokumentu obiektu, a następnie powtórzyć wyniki wyszukiwania i użyć getElement. Na koniec, aby przekształcić obiekt Element w obiekt tekstowy, można użyć asText()
.
Mam nadzieję, że to zadziała! ;)
Wraz z wprowadzeniem skryptów dokument związany, to teraz możliwe, aby funkcja podświetlania tekstu, która jest wywoływana z niestandardowego menu.
Z pewnością THIS jest teraz najlepszą odpowiedzią! 8 ^)
Ten skrypt został zmodyfikowany z tego w this answer i może zostać wywołany z interfejsu użytkownika (bez parametrów) lub skryptu.
Masz findText() do pracy z RegEx? –
Tak, findText() działa z RegEx dla 'searchpattern'. W odpowiedzi dostajemy ciąg znaków od użytkownika, więc musisz wygenerować z tego RegEx; zobacz [tę odpowiedź] (http://stackoverflow.com/questions/4371565). – Mogsdad
Dobra odpowiedź ... ale czy nie jest to kwestia koloru "ForeGround"? ;) nie wygląda jednak trudniej ekstrapolować. –
Jest dostępny jako dodatek do Dokumentów Google o nazwie Podświetlenie tekstu z wieloma instancjami. Wskazówki: Początkowo nie działało, ale zamknąłem dokument i ponownie go otworzyłem, a następnie zadziałało. Wtedy to nie działało od czasu do czasu, ale odkryłem, że znaki specjalne w twoim ciągu tekstowym mogą je złamać; Myślę, że miałem ciąg + w moim łańcuchu i po prostu nic nie zrobił. Ale bez specjalnych znaków, działa świetnie. Naprawdę mi pomogłem.
Czy tekst wielu wystąpień może być używany w Skryptach Google Apps? Pytanie dotyczyło automatycznego kolorowania i nie mogłem znaleźć interfejsu programisty dla tego dodatku. –
- 1. Zwijanie elementów w dokumencie Google za pomocą Google Apps Script - czy jest to możliwe?
- 2. Dodawanie zdjęć do dokumentu Google za pomocą Google Apps Script
- 3. Jak pobrać utworzony plik csv za pomocą Google Apps Script?
- 4. Wywołanie funkcji arkusza kalkulacyjnego Google za pomocą skryptów Google Apps
- 5. Utwórz nowy arkusz w arkuszu kalkulacyjnym Google za pomocą Google Apps Script
- 6. Jak uzyskać dostęp do danych w różnych Arkuszach kalkulacyjnych Google za pomocą Google Apps Script?
- 7. Jak pobrać identyfikator arkusza kalkulacyjnego Google za pomocą Google Apps Script?
- 8. Jak dodać formuły do arkusza kalkulacyjnego Google za pomocą Google Apps Script?
- 9. Jaki jest limit wiadomości e-mail w Google Apps Script?
- 10. uzyskać wartość w jednej kolumnie w arkuszu za pomocą Google Apps Script
- 11. Skuteczny sposób debugowania aplikacji sieci Web Google Apps Script
- 12. Usuwanie zawartości w usłudze Google Apps Script Document Service
- 13. Jak zdefiniować zmienną globalną w Google Apps Script
- 14. Formatowanie komórki Arkuszy Google w postaci zwykłego tekstu za pomocą Apps Script
- 15. Google Apps Script Regular Expression, aby uzyskać nazwisko osoby
- 16. Konwersja node.js fragment kodu na Javascript (Google Apps Script)
- 17. Google Apps Script formatDate użyciu strefy czasowej użytkownika zamiast GMT
- 18. Która edycja ECMA-262 obsługuje Google Apps Script?
- 19. Jak wykonać żądania XHR/ajax przeciwko Google Apps Script ContentService?
- 20. Jak przekazać argument do debugera Google Apps Script?
- 21. Czy mogę wykonać skrypt Google Apps Script z rozszerzenia przeglądarki Chrome?
- 22. Google Apps Script Jak odwołuje się do pliku CSS lub JS na Dysku Google
- 23. Umieszczanie skryptu Google Apps w iFrame
- 24. Google Analytics i Samsung Smart TV Apps
- 25. Skrypt Google Apps UrlFetchApp z JSON Payload
- 26. Użyj projektu plików JavaScript i CSS w aplikacji internetowej Google Apps Script?
- 27. Konwersja dokumentu Google do formatu PDF za pomocą Google Script Edytor
- 28. Skrypt Google Apps, aby usunąć wszystkie pliki z dysku Google?
- 29. Czy mogę obsługiwać wielokrotne logowanie Google za pomocą App Engine?
- 30. Skrypt Google Apps i zewnętrzny interfejs API
Dziękuję. Tego właśnie szukałem. Jak radzisz sobie ze słowem występującym więcej niż raz w akapicie? – user1613077
Ta sama zasada dotyczy. Rozsuwasz paragraf i składasz go ponownie. Po ponownym złożeniu, używasz setForegroudColor na każdym słowie. – Weehooey