cey*_*eyx 7 google-docs google-apps-script
我正在处理Google文档添加,将文本转换为表格.它允许用户1)选择一些文本或2)将光标放在他们想要的文本中,当单击侧边栏中的自定义按钮时,脚本将:
(基本上,这只是"绘制"围绕所选文本或元素的表格)
文档概述显示可以通过插入文本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会产生这个非常相似的问题,建议在光标位置插入一些占位符文本,然后在文档中搜索插入的字符串并放置一个表格.这种方法有两个主要问题:
如果任何人都可以扩展占位符文本方法,或者可以提供新的解决方案,那将非常有帮助.谢谢!
我使用以下 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
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |