幻灯片演示文稿中所有文本的 getForegroundColor() returns 空
getForegroundColor() for all the text in a Slides presentation returns empty
我正在尝试获取幻灯片演示文稿中所有文本的颜色。我有:
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;
}, []);
但是颜色似乎是 empty/blank,即使我在演示文稿中将颜色设置为红色、紫色、黄色等。我也尝试附加 "asRgbColor()" 但那没有提醒我任何事情。我如何获得文本颜色?
- 您想检索 Google 幻灯片中的文本颜色。
- 您想使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 为了使用
asRgbColor()
以字符串形式检索颜色,使用 asHexString()
怎么样?
- 或者如果要检索红绿蓝作为整数,也可以使用
getRed()
、getGreen()
和getBlue()
。
- 在这种情况下,将检索 RGB 颜色。
当以上几点反映到你的脚本中,就变成了下面这样。
修改后的脚本:
请修改如下
从:
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"}
. 这样的对象
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
我正在尝试获取幻灯片演示文稿中所有文本的颜色。我有:
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;
}, []);
但是颜色似乎是 empty/blank,即使我在演示文稿中将颜色设置为红色、紫色、黄色等。我也尝试附加 "asRgbColor()" 但那没有提醒我任何事情。我如何获得文本颜色?
- 您想检索 Google 幻灯片中的文本颜色。
- 您想使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 为了使用
asRgbColor()
以字符串形式检索颜色,使用asHexString()
怎么样?- 或者如果要检索红绿蓝作为整数,也可以使用
getRed()
、getGreen()
和getBlue()
。
- 或者如果要检索红绿蓝作为整数,也可以使用
- 在这种情况下,将检索 RGB 颜色。
当以上几点反映到你的脚本中,就变成了下面这样。
修改后的脚本:
请修改如下
从: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"}
. 这样的对象
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。