谷歌应用程序脚本::是否有可能获得光标的位置或从谷歌文档中获得选定的文本

Google apps script :: Is it possible to get the cursor position or get the selected text from Google Document

本文关键字:谷歌 文档 文本 光标 脚本 应用程序 是否 有可能 位置      更新时间:2023-09-26

是否有任何Google Apps Script API来获取光标位置或从Google Document中获取所选文本。我找过了,什么也没找到。如果有人知道这件事,请帮助我。

谢谢,Vinod

目前没有这样的API。但是,在问题跟踪器上有一个未解决的问题。

尝试以下方法高亮显示,然后选择。这绝对是一种变通,但它可能适合您的需要。此方法的缺点是它将选择所有指定颜色的高亮文本。

function findHighlighted() {
  var body = DocumentApp.getActiveDocument().getBody(),
      bodyTextElement = body.editAsText(),
      bodyString = bodyTextElement.getText(),
      char, len;
  for (char = 0, len = bodyString.length; char < len; char++) {
    if (bodyTextElement.getBackgroundColor(char) == '#ffff00') // Yellow
      Logger.log(bodyString.charAt(char))}
}

前面的答案在技术上是正确的,因为API中还没有包含用鼠标/光标选择文本的直接方法。

Add-ons快速入门有一个示例,其中包含以下方法:

/**
 * Gets the text the user has selected. If there is no selection,
 * this function displays an error message.
 *
 * @return {Array.<string>} The selected text.
 */
function getSelectedText() {
  var selection = DocumentApp.getActiveDocument().getSelection();
  if (selection) {
    var text = [];
    var elements = selection.getSelectedElements();
    for (var i = 0; i < elements.length; i++) {
      if (elements[i].isPartial()) {
        var element = elements[i].getElement().asText();
        var startIndex = elements[i].getStartOffset();
        var endIndex = elements[i].getEndOffsetInclusive();
        text.push(element.getText().substring(startIndex, endIndex + 1));
      } else {
        var element = elements[i].getElement();
        // Only translate elements that can be edited as text; skip images and
        // other non-text elements.
        if (element.editAsText) {
          var elementText = element.asText().getText();
          // This check is necessary to exclude images, which return a blank
          // text element.
          if (elementText != '') {
            text.push(elementText);
          }
        }
      }
    }
    if (text.length == 0) {
      throw 'Please select some text.';
    }
    return text;
  } else {
    throw 'Please select some text.';
  }
}