getForegroundColor () для всего текста в презентации Slides возвращает пустой - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь получить цвет всего текста в презентации. У меня есть:

 var slides = SlidesApp.getActivePresentation().getSlides();

 var pageElements = slides.reduce(function (list, slide) {
    return list.concat(slide.getPageElements());
  }, []);

  var textRanges = pageElements.reduce(function (list, pageElement) {
    if (pageElement.getPageElementType() == "SHAPE") {
      for (var i=0; i < pageElement.asShape().getText().getRuns().length; i++){
        ui.alert(pageElement.asShape().getText().getRuns()[i].getTextStyle().getForegroundColor());
      }
    }
    return list;
  }, []);

Но цвета кажутся пустыми / пустыми, хотя я установил цвета в своей презентации на красный, фиолетовый, желтый и т. Д. c. Я также попытался добавить "asRgbColor ()", и это ничего не предупреждает меня. Как получить цвет текста?

1 Ответ

2 голосов
/ 15 марта 2020
  • Вы хотите получить цвета текста в Google Slides.
  • Вы хотите добиться этого с помощью Google Apps Script.

Если мое понимание верно, как насчет этот ответ? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точки модификации:

  • Чтобы получить цвет в виде строки, используя asRgbColor(), как насчет использования asHexString()?
    • Или, если вы хотите получить красный, зеленый и синий как целые числа, вы также можете использовать getRed(), getGreen() и getBlue().
  • В этом случае восстанавливается цвет RGB.

Когда вышеуказанные точки отражаются в вашем скрипте, он становится следующим:

Модифицированный скрипт:

Пожалуйста, измените

From:
var textRanges = pageElements.reduce(function (list, pageElement) {
  if (pageElement.getPageElementType() == "SHAPE") {
    for (var i=0; i < pageElement.asShape().getText().getRuns().length; i++){
      ui.alert(pageElement.asShape().getText().getRuns()[i].getTextStyle().getForegroundColor());
    }
  }
  return list;
}, []);
To:
var textRanges = pageElements.reduce(function (list, pageElement) {
  if (pageElement.getPageElementType() == "SHAPE") {
    var text = pageElement.asShape().getText().getRuns(); // Added
    for (var i=0; i < text.length; i++){ // Modified
      if (text[i].getTextStyle().getForegroundColor().getColorType() == SlidesApp.ColorType.RGB) { // Added
        list.push({text: text[i].asString(), color: text[i].getTextStyle().getForegroundColor().asRgbColor().asHexString()}); // Modified
      }
    }
  }
  return list;
}, []);
  • В этом случае вы можете получить результат с помощью textRanges. Результат включает в себя объект типа {"text":"sample","color":"#000000"}.

Ссылки:

Если я неправильно понял ваш вопрос, и это не было Направление вы хотите, я прошу прощения.

...