Подсчет слов по цветам переднего плана в скрипте приложений Docs - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь написать сценарий с Google Apps Script, который возвращает количество слов для каждого цвета.

Я написал код, который возвращает общее количество слов, и код, который возвращает цвет переднего плана для каждого абзаца. Насколько я понимаю, абзацы содержат свойство цвета переднего плана, а текст - нет. Мне трудно объединить две мои функции, чтобы вернуть количество слов для заданного цвета. Ниже то, что у меня есть. Любые предложения или указания помогут.

  function myFunction() {

  var doc = DocumentApp.openByUrl("https://docs.google.com/document/d/1wi0EEWZECyn2Q7B0XWY3D6WKJ2TNZ_XzN47LTT8yWng/edit");
  var docBody = doc.getBody();
  var text = docBody.getText();
  var paragraph = docBody.getParagraphs();

// Return word count of text.

  if (text.length === 0) 
        return 0;

  text = text.replace(/\r\n|\r|\n/g, " ");
  var replacePunctuation = text.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()"?“”]/g," ");
  var finalString = replacePunctuation.replace(/\s{2,}/g," ");
  var count = finalString.trim().split(/\s+/).length; 
  Logger.log(count);
  
//Identify all paragraph colors 

  var i;
  var color;
  for (i = 0; i < paragraph.length; i++) { 
    color = paragraph[i].getForegroundColor();
    Logger.log("paragraph " + i + ": " + color);
  }

//Identify individual colors of characters is a given paragraph
  
  var i;
  var color;
  for (i = 0; i < paragraph[0].getText().length; i++) { 
    var color = paragraph[0].editAsText().getForegroundColor(i);
    Logger.log("character" + i + ": " + color);
  }

  }

1 Ответ

1 голос
/ 06 августа 2020

Проблема

Основная проблема вашего сценария состоит в том, что DocumentApp имеет только два метода для получения цвета переднего плана: getForegroundColor () и getForegroundColor (смещение) . Первый возвращает только шестнадцатеричное значение цвета, если весь текст в элементе (который в вашем случае является абзацем) имеет тот же цвет фона, иначе он вернет null. Второй вернет цвет переднего плана каждого символа в тексте. Таким образом, не существует метода для возврата цвета слова.

Обходной путь

Чтобы подсчитать количество слов в каждом цвете переднего плана, вы можете сначала разделить весь текст на отдельные слова и сохраните их в массиве с их начальными индексами в тексте, предполагая, что слово будет иметь только один цвет.

Затем переберите a для l oop по массиву слов и получите цвет переднего плана первый символ каждого слова и добавьте 1 к массиву, в котором есть счетчики для каждого цвета.

Надеюсь, это вам помогло. Дайте мне знать, если вам еще что-нибудь понадобится или вы чего-то не поняли. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...