如何从 Google 附加侧边栏设置 Docs 属性?

How do I set Docs attributes from a Google add-on sidebar?

我正在尝试为 Docs 创建一个附加组件,它允许我的学生使用附加组件侧边栏中的某些预定义荧光笔工具突出显示所选文本(类似于 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中,按钮是这样分配的:

显然这不起作用,但我不确定接下来要尝试什么。

帮忙?

如果您从自定义对话框或边栏调用 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