如何使用 Google Docs API 缩进项目符号列表

Gab*_*eli 4 google-docs-api

从 Google 文档开始,如下所示:

* Item
Run Code Online (Sandbox Code Playgroud)

我希望进行一系列 API 调用,将文档变成:

* Item
   - Subitem
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使用 API 来做到这一点。ACreateParagraphBulletRequest没有我可以指定的缩进级别。文档建议:

每个段落的嵌套级别将通过计算每个段落前面的前导制表符来确定。为了避免项目符号和相应段落之间出现过多空间,此请求将删除这些前导选项卡。这可能会更改文本部分的索引。

但是,将制表符添加到 an 的开头InsertTextRequest将会添加制表符,而不是更改缩进:

* Item
*        Subitem
Run Code Online (Sandbox Code Playgroud)

有人对我可能做错了什么有任何想法吗?

Tan*_*ike 5

我相信你的目标如下。

实现目标的要点:

在这种情况下,为了将项目作为第二级插入到现有列表中,根据我的经验,我无法直接插入它。就我而言,作为解决方法,我使用以下流程。

  1. \n\titem2\n使用请求插入第二级文本insertText
    • 在这种情况下,也会插入第一层。似乎为了插入深层项目,需要从第一层开始设置并转换为带有项目符号的列表。
  2. 使用createParagraphBullets,它将项目符号添加到列表中。这样,\t就转换为嵌套项目。
  3. 移除第一级的子弹。
  4. 删除换行符。

请求正文示例:

当上述流程反映到Docs API中的batchUpdate方法的请求体时,就会变成如下所示。

{
  "requests": [
    {
      "insertText": {
        "text": "\n\titem2\n",
        "location": {
          "index": 7
        }
      }
    },
    {
      "createParagraphBullets": {
        "range": {
          "startIndex": 1,
          "endIndex": 15
        },
        "bulletPreset": "BULLET_DISC_CIRCLE_SQUARE"
      }
    },
    {
      "deleteParagraphBullets": {
        "range": {
          "startIndex": 7,
          "endIndex": 8
        }
      }
    },
    {
      "deleteContentRange": {
        "range": {
          "startIndex": 7,
          "endIndex": 8
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

结果:

当使用上述请求体时,将得到以下结果。

前:

在此输入图像描述

后:

在此输入图像描述

笔记:

  • 尽管我在不更改现有列表的情况下寻找了其他使用 Docs API 的方法,但不幸的是,我仍然找不到它们。我认为为了将深层嵌套项目插入到现有列表中,在当前阶段,可能需要使用从第一级给出项目\t。不幸的是,我不确定这是否是规范。那么,例如,向问题跟踪器请求这个作为未来的请求怎么样?参考号

参考: