2016-05-07 48 views
0

我有一些Google文檔和一些文本,並且我創建了一個補充工具欄。我想要的是,當有人突出顯示一個單詞時,然後使用側邊欄中的單選按鈕單擊某個選項,該單詞將根據所選選項以某種顏色突出顯示。 我已經使用HtmlService獲得了單選按鈕的邊欄,並且我有一些Google Apps腳本會突出顯示該單詞。 我正在努力的是找到一種方法來註冊哪個單選按鈕已被點擊,然後可以用來決定選擇哪種顏色。 我已經設法在HTML代碼中使用Javascript觸發動作,但我無法將其與突出顯示該單詞的功能鏈接。我一直試圖設置一個變量,當按鈕被選中,然後可以在If語句中使用,以決定添加什麼顏色。 這是我迄今爲止編寫的GAS代碼和HTML。 如果任何人有任何想法,缺少什麼,他們將不勝感激。 謝謝!在Google文檔側欄上選中單選按鈕時,如何觸發Google文檔中的操作?

//Function to create sidebar and get HTML from file called Index 
function sidebar() { 

     var htmlOutput = HtmlService.createHtmlOutputFromFile('Index') 
      .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
      .setTitle('Writing codes'); 

     DocumentApp.getUi().showSidebar(htmlOutput); 

    } 

下面是文件 「的Index.html」

<!DOCTYPE html> 
    <html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
     <p>Highlight an area and click on a code below to highlight it in the text.</p> 

    <form> 
    <input type="radio" name="error" id="GrammarBut"/> Grammar<br /> 
    <input type="radio" name="error" id="VocabBut"/> Vocabulary<br /> 
    <input type="radio" name="error" id="WOBut"/> Word order<br /> 
    <br /> 
<div class="block"> 
    <button class="blue">Add</button> 
</div> 
</form> 

</body> 
</html> 

下面是功能highlightText如果選擇其中突出的單詞。

function highlightText() { 
    var selection = DocumentApp.getActiveDocument().getSelection(); 
    if (selection) { 
    var elements = selection.getRangeElements(); 
    for (var i = 0; i < elements.length; i++) { 
    var element2 = elements[i]; 

// Only modify elements that can be edited as text; skip images and other non-text elements. 
    if (element2.getElement().editAsText) { 
    var text = element2.getElement().editAsText(); 
    if (element2.isPartial()) { 
     text.setBackgroundColor(element2.getStartOffset(), element2.getEndOffsetInclusive(), "#FFFD4C"); 
     } else { 
     text.setBackgroundColor("#FFFD4C");  
    } 
    } 
    } 
} 
} 

回答

2

添加一個onclick事件,該事件通過引用觸發元素來觸發客戶端JavaScript函數。然後用您的顏色選擇調用服務器端功能。

單選按鈕元素:

<form> 
    <input onclick="chngColor(this)" type="radio" name="error" id="GrammarBut"/> Grammar<br /> 
    <input onclick="chngColor(this)" type="radio" name="error" id="VocabBut"/> Vocabulary<br /> 
    <input onclick="chngColor(this)" type="radio" name="error" id="WOBut"/> Word order<br /> 
    <br /> 

客戶端的JavaScript:

function chngColor(element) 
{ 
    var id = element.id; 
    var color; 

    if(id == "GrammerBut") 
    color = "the color you need"; 
    else if(id == "VocabBut") 
    color = "next color"; 
    else if(id == "WOBut") 
    color = "final color"; 

    google.script.run.highlightText(color); 
} 

然後,只需更改服務器端函數採取一個參數來設置顏色,或者其他任何你需要做的。

+0

傑出的工作!非常感謝!對於任何其他人閱讀這個類似的問題,在HTML文檔中,我把上面的按鈕HTML以及