google-apps-script - 在光标位置将表格插入谷歌文档

标签 google-apps-script google-docs

我正在开发一个将文本转换为表格的 Google Docs 插件。它允许用户 1) 选择一些文本或 2) 将光标放在他们想要的文本内,当单击侧边栏中的自定义按钮时,脚本将:

  • 在光标位置或所选文本的 startIndex 处插入单行单单元格表,
  • 将用户选择的文本或光标所在元素的完整文本放置在该单元格内,
  • 删除原始选定的文本/元素,以便只保留表格

  • (本质上,这只是围绕选定的文本或元素“绘制”一个表格)

    documentation 概览显示可以通过 var element = cursor.insertText('ಠ‿ಠ'); 插入文本,但没有类似的方法用于插入其他元素。因此,我一直在尝试使用 insertTable(childIndex, cells)取得了不同程度的成功。专注于用户只是将光标放在元素内的情况,我可以插入带有正确文本的表格并删除原始文本,但我找不到将表格插入正确位置的方法。我尝试了以下方法,但无济于事:
  • var newTable = body.insertTable(cursor.getOffset(), [['Test Text']]); - 这会创建表格,但会将其插入错误的位置,这似乎是基于光标在文本中的位置,通常是在文档的开头。
  • var el = cursor.getElement().asBody(); var newTable = el.insertTable(0, [['Test Text']]); - 这没有任何作用
  • var el = cursor.getElement().getParent().asBody(); var newTable = el.insertTable(0, [['Test Text']]); - 这没有任何作用
  • var el = cursor.getElement(); var parent = el.getParent().getChildIndex(el); var newTable = body.insertTable(parent, [['Test Text']]); - 这会在文档的最开头插入表格。

  • 搜索 Stack Overflow 会得到 this very similar question建议在光标位置插入一些占位符文本,然后在文档中搜索插入的字符串并放置一个表格。我对这种方法有两个主要担忧:
  • 我需要直接修改插入点周围的文本,插入额外的文本似乎会使这变得更加困难,
  • 更重要的是,我仍然不知道如何获取表格插入点的正确位置。

  • 如果有人可以扩展占位符文本方法,或者可以提供新的解决方案,那将非常有帮助。谢谢!

    最佳答案

    我使用以下 GAS 代码在 Google Doc 的当前光标位置插入表格。如果您的光标在换行符上,效果会更好。

      var doc = DocumentApp.getActiveDocument();
      var body = doc.getBody();
      var cursor = doc.getCursor();
    
      var element = cursor.getElement();
      var parent = element.getParent();
      //here table is an array of cells like
      // [[r1c1, r1c2], [r2c1, r2c2]]
      body.insertTable(parent.getChildIndex(element) + 1, table);
    

    编辑:为了更好地了解 Google Doc 中光标位置的工作原理,我建议您运行以下光标检查器 github 项目

    https://github.com/google/google-apps-script-samples/tree/master/cursor_inspector

    关于google-apps-script - 在光标位置将表格插入谷歌文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33945638/

    相关文章:

    google-apps-script - 如何在Google Apps脚本中导入函数

    google-apps-script - Google Apps 脚本自动生成的库文档

    javascript - 如何根据谷歌表格中其他单元格的值更改单元格的颜色

    java - 制作谷歌电子表格的副本

    google-apps-script - 如何从 Google Sheet 的脚本中读取 Google Doc 的内容?

    javascript - 为什么我的 Chrome 扩展程序无法单击 Google 文档中的 'New Comment' 按钮?

    google-apps-script - 在 Google 表格中自动生成唯一的顺序 ID

    google-apps-script - 在 Google 网站中嵌入 Google 电子表格时,Google Apps 脚本可帮助解决错误?

    google-apps-script - Google 文档 - 脚本,将单元格从一张纸复制到另一张纸

    google-apps-script - 在 Google Docs 中操作 PositionedImage 并在图像周围环绕文本