[英]Creating Rainbow Text in Google Docs
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 Doc 中進行了選擇,並將其更改為十六進制代碼 #69359c(深紫色)。 我搜索了很多網站,很多gits,也向很多朋友尋求我的項目幫助。
我的最終項目是這樣的:
如果有人可以幫助我,將不勝感激。
我剛剛發現了這個問題,很高興從我的 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(...));
}
你已經非常接近答案了。 嘗試迭代“text”變量中的元素,以便您可以更改每個元素的背景。
你可以使用這樣的東西來迭代每個字母:
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 環境之外不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.