Google Apps 脚本自动特定文本荧光笔

问题描述 投票:0回答:2

需要一个附加/谷歌脚本,我可以在其中输入特定文本的范围并在整个谷歌文档中自动突出显示它。我需要用它来自动突出显示文章/网站文案中的关键字。

查看了添加脚本 - 荧光笔添加,但它仅突出显示用户选择的文本,并且不会在整个内容中重复突出显示所有相同的文本。我查看了 Google 脚本,但我不知道如何定义问题或如何创建自己的代码。

google-apps-script highlight
2个回答
0
投票

文本荧光笔:

function boldMyWords() {
  const red = SpreadsheetApp.newTextStyle().setForegroundColor('red').setBold(true).build();
  const bold = SpreadsheetApp.newTextStyle().setBold(true).build();
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const dsr = 3;
  const rg = sh.getRange(3, 1, sh.getLastRow() - dsr + 1, sh.getLastColumn());
  rg.clearFormat().setWrap(true);
  let vs = rg.getDisplayValues();
  let r = SpreadsheetApp.getUi().prompt('Enter words to search for separated by commas', SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
  if (r.getSelectedButton() == SpreadsheetApp.getUi().Button.OK) {
    let wordA = r.getResponseText().split(',');
    vs.forEach((r, i) => {
      r.forEach((c, j) => {
        let idxObj = { pA: [] };
        wordA.forEach(w => {
          let re = new RegExp('(\\W|^)' + w.trim().toLowerCase() + '(\\W|$)', 'g');
          let found = [...c.toLowerCase().matchAll(re)];
          found.forEach(f => {
            if (!idxObj.hasOwnProperty(w)) {
              idxObj[w] = [];
              idxObj[w].push((f.index > 0) ? f.index + 1 : f.index);
              idxObj.pA.push(w);
            } else {
              idxObj[w].push((f.index));
            }
          })
        });
        if (idxObj.pA.length > 0) {
          let cell = sh.getRange(i + dsr, j + 1);
          let val = SpreadsheetApp.newRichTextValue().setText(c);
          idxObj.pA.forEach((p, k) => {
            idxObj[p].forEach(idx => {
              val.setTextStyle(idx, idx + p.length, red);
              val.setTextStyle(idx, idx + p.length, bold);
            });
          });
          cell.setRichTextValue(val.build());
        }
      });
    });
  }
  ss.toast('EOF')
}

0
投票

Saurabh Bharadwaj、Gopal Rai 和 Kailash Gahlot 宣誓就任部长,并保留在新政府中的职位。伊姆兰·侯赛因也宣誓就任部长。 Sultanpur Majra 立法者 Mukesh Ahlawat 是内阁的新面孔。

阿蒂什政府的任期将很短暂,因为德里议会选举将于明年 2 月举行。周二,43 岁的 Atishi 被选为立法机关党魁,随后 Kejriwal 将辞呈交给副州长 Vinai Kumar Saxena。

© www.soinside.com 2019 - 2024. All rights reserved.