如何从Google附加组件侧边栏设置文档属性?

时间:2015-11-21 04:18:56

标签: google-apps-script google-apps

我正在尝试为文档创建一个插件,让我的学生可以使用插件侧边栏中的某些预定义的荧光笔工具突出显示文本的选择(类似于this add-on,但预定义了荧光笔工具)。

我已经能够使用Google脚本与我的驱动器文件进行交互,创建文件夹,重命名文件等,并且我知道如何在HTML中使用.onclick功能。我被困住的地方是,当单击按钮时,我的侧边栏中的按钮可以更改文档中所选文本的属性。

根据我在开发人员文档中的阅读,我的.gs脚本如下所示:

 function highlightStyleGreen() {
      var selection = DocumentApp.getActiveDocument().getSelection();
      if (selection) {
        var elements = selection.getRangeElements();
        for (var i = 0; i < elements.length; i++) {
        var element = elements[i];}
        var highlightStyleGreen = {};
         highlightStyle[DocumentApp.Attribute.BACKGROUND_COLOR] =    '#7CCD7C';

       selection.setAttributes(highlightStyleGreen);
      }
    }

在HTML中,按钮的分配方式如下:

&LT; button onclick =“highlightStyleGreen()”&gt;主要想法&lt; /按钮&GT;

显然这不起作用,但我不确定下一步该尝试什么。

帮助?

1 个答案:

答案 0 :(得分:0)

如果您从自定义对话框或侧边栏调用google-apps-script函数(包括自定义函数),则语法为:

<button onclick="google.script.run.highlightStyleGreen()">Main Idea</button>

文档:https://developers.google.com/apps-script/guides/html/communication

这是google-apps-script代码。此功能将以绿色突出显示用户的选择。

function highlightStyleGreen() {

  //App>Doc>Body>Paragraph>Text
  //selection>rangeElements>RangeElement>Element>Text

  var selection = DocumentApp.getActiveDocument().getSelection();
  if (selection) {

    //declare variables once before loop
    var elements = selection.getRangeElements();    
    var rngEelement;
    var element;
    var text;
    var startOffset;
    var endOffsetInclusive;

    //loop through selection
    for (var i=0; i < elements.length; i++){
      rngElement = elements[i];
      element = rngElement.getElement();
      if (element) {
        text = element.asText();  
        if (text) {
          //if we are on a 'partial element' we need to only grab the selected part of the text
          if (rngElement.isPartial()) {
            startOffset = rngElement.getStartOffset();
            endOffsetInclusive = rngElement.getEndOffsetInclusive();
            text.setBackgroundColor(startOffset, endOffsetInclusive, '#00FF00');
          } else {
            text.setBackgroundColor('#00FF00');
          }
        }
      }
    }
  }
}

文档:https://developers.google.com/apps-script/guides/docs