gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:19:15 25 4
gpt4 key购买 nike

我正在开发一个将文本转换为表格的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com