var selectedElements = selection.getSelectedElements();
for (var i = 0; i < selectedElements.length; ++i) {
var selectedElement = selectedElements[i];
// Only modify elements that can be edited as text; skip images and other
// non-text elements.
var text = selectedElement.getElement().editAsText();
// Change the background color of the selected part of the element, or the
// full element if it's completely selected.
if (selectedElement.isPartial()) {
text.setColor(selectedElement.getStartOffset(),
selectedElement.getEndOffsetInclusive(), '#69359c');
}
}
}
上述文字在Google文档中进行了选择,并将其更改为十六进制代码#69359c(深紫色)。我搜索了许多网站,很多gits,并请了很多朋友帮我的项目。
我的最终项目是:
如果有人可以帮助我,我们将非常感激。
答案 0 :(得分:0)
你已经非常接近答案了。尝试迭代你文本中的元素&#39;变量,因此您可以更改每个变量的背景。
您可以使用类似的东西迭代每个字母:
var letters = elementText.getText();
for(var j = 0 ; j< letters.length-1; j++)
{
elementText.setBackgroundColor(j, j+1, getRandomColor())
}
以下是使用不同颜色的函数示例:
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ )
{
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
对于您的上一个问题,由于Text类不是Javascript的一部分,而是来自app-script库,因此在Google环境之外无法使用。
答案 1 :(得分:0)
我刚刚发现了这个问题,很高兴能从我的Rainbow Font Google Docs插件(Magic Rainbow Unicorns)中提供一些工作代码。
第一个问题是你需要在文本上设置前景色,第二个问题是上面的代码只允许选择部分段落。
对于整个选择,请使用以下代码:
var elementText = element.editAsText();
if (elementText) {
var paragraph = elementText.getText();
for (var j = 0; j < paragraph.length; j++) {
elementText.setForegroundColor(j, j, getNextRainbowColour(...));
}
}
对于部分选择,我使用了这个:
var elementText = element.asText();
var startIndex = element.getStartOffset();
var endIndex = elements.getEndOffsetInclusive();
for (var j = startIndex; j < endIndex+1; j++) {
elementText.setForegroundColor(j, j, getNextRainbowColour(...));
}