我正在尝试获取幻灯片演示文稿中所有文本的颜色。我有:
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;
}, []);
但是,即使我将演示文稿中的颜色设置为红色,紫色,黄色等,颜色也似乎是空/空白。我也尝试附加“ asRgbColor()”,但这并没有引起我的注意。任何东西。如何获得文字颜色?
答案 0 :(得分:2)
如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
asRgbColor()
以字符串形式检索颜色,如何使用asHexString()
?
getRed()
,getGreen()
和getBlue()
。当以上几点反映到您的脚本时,它如下所示。
请进行如下修改。
从: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;
}, []);
至:
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"}
之类的对象。如果我误解了您的问题,而这不是您想要的方向,我深表歉意。