我正在开发一个将文本转换为表格的 Google Docs 插件。它允许用户 1) 选择一些文本或 2) 将光标放在他们想要的文本内,当单击侧边栏中的自定义按钮时,脚本将:
(本质上,这只是围绕选定的文本或元素“绘制”一个表格)
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/