在光标位置将表格插入谷歌文档

cey*_*eyx 7 google-docs google-apps-script

我正在处理Google文档添加,将文本转换为表格.它允许用户1)选择一些文本或2)将光标放在他们想要的文本中,当单击侧边栏中的自定义按钮时,脚本将:

  1. 在光标位置插入单行单个单元格表或所选文本的startIndex,
  2. 在该单元格内放置用户选择的文本或放置光标的元素的完整文本,
  3. 删除原始选定的文本/元素,以便仅保留表

(基本上,这只是"绘制"围绕所选文本或元素的表格)

文档概述显示可以通过插入文本var element = cursor.insertText('???');,但没有类似的插入其他元素的方法.因此,我一直在尝试使用insertTable(childIndex, cells)不同程度的成功.着眼于在用户只需将光标里面的元素的情况下,我可以插入表格与正确的文本,并删除原文,但我不能找到一种方法来插入表在正确的位置.我试过以下,但无济于事:

  1. var newTable = body.insertTable(cursor.getOffset(), [['Test Text']]); - 这会创建表,但会将其插入错误的位置,似乎基于文本放置在文本中的位置,通常朝向文档的开头.

  2. var el = cursor.getElement().asBody(); var newTable = el.insertTable(0, [['Test Text']]); - 这没什么

  3. var el = cursor.getElement().getParent().asBody(); var newTable = el.insertTable(0, [['Test Text']]); - 这没什么

  4. var el = cursor.getElement(); var parent = el.getParent().getChildIndex(el); var newTable = body.insertTable(parent, [['Test Text']]); - 这会在表格的最开头插入表格.

搜索Stack Overflow会产生这个非常相似的问题,建议在光标位置插入一些占位符文本,然后在文档中搜索插入的字符串并放置一个表格.这种方法有两个主要问题:

  1. 我需要直接修改插入点周围的文本,插入额外的文本似乎可能会使这更难,并且
  2. 更重要的是,我仍然不知道如何获得表的插入点的正确位置.

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

Mr.*_*unt 5

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

  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);
Run Code Online (Sandbox Code Playgroud)

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

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