如何按背景颜色在 google 文档中搜索文本?

How to search for text in a google document by background color?

我正在尝试将 Google Doc 文件中具有特定颜色的文本的背景颜色设置为另一种颜色。

基本上我想做的是解析它,当我找到具有 "x" 背景颜色的文本时,我想通过 Apps 脚本将其更改为 "y" 背景颜色.

这是我一直在使用的代码

function onOpen() {
      DocumentApp.getUi()
          .createMenu('Utilities')
          .addItem('Auto-Replace', 'replaceSuits')
          .addToUi();
    };

function replaceSuits() {
  var doc  = DocumentApp.getActiveDocument(); 
  var body = doc.getBody();      
  var text = body.editAsText();

  var found = text.getBackgroundColor() === '#ff8c82';
  var apple = body.findText(found);

  while (apple) {
    var elem = apple.getElement();
    if (apple.isPartial()) {
      var start = apple.getStartOffset();
      var end = apple.getEndOffsetInclusive();
      elem.setBackgroundColor(start, end, "#000000");
    }
    else {
      elem.setBackgroundColor("#000000");
    }
    apple = body.findText(found, found);
  }
};

我知道我的变量是重复的并且有点荒谬,但这是由于我一直在进行各种测试,试图弄清楚为什么这段代码不起作用。我提前道歉。

关于如何有效地解决这个问题有什么想法吗?

  • 您想将 Google 文档中文本的背景颜色从 #ff8c82 修改为 #000000
  • 您想使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

修改点:

  • 在您的情况下,通过检查 body.editAsText() 检索到的文本对象的颜色来修改颜色。

修改后的脚本:

function replaceSuits() {
  var doc  = DocumentApp.getActiveDocument(); 
  var body = doc.getBody();
  var text = body.editAsText();

  // I modified below script.
  for (var i = 0; i < text.getText().length; i++)
    if (text.getBackgroundColor(i) == "#ff8c82") text.setBackgroundColor(i, i, "#000000");
}

参考文献:

如果我误解了你的问题,这不是你想要的方向,我很抱歉。