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

How do I indent a bulleted list with the Google Docs API

从 Google 文档开始,看起来像:

* Item

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

* Item
   - Subitem

但是,我不知道如何使用 API 执行此操作。 CreateParagraphBulletRequest 没有我可以指定的缩进级别。文档建议:

The nesting level of each paragraph will be determined by counting leading tabs in front of each paragraph. To avoid excess space between the bullet and the corresponding paragraph, these leading tabs are removed by this request. This may change the indices of parts of the text.

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

* Item
*        Subitem

有人知道我做错了什么吗?

我相信你的目标如下。

  • 您想使用 Google 文档 API.

    创建嵌套列表
  • 首先,Google 文档中存在一个列表,其中有一个项目作为第一级。如下

      - item1
    
  • 在这种情况下,您想将一个嵌套项目作为第 2 层插入到现有列表中。如下

      - item1
         - item2
    

实现目标的分数:

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

  1. 使用 insertText 请求为第 2 级插入文本 \n\titem2\n
    • 在这种情况下,第 1 级也被插入。好像要插入深层次的item,需要从第1层开始设置,转换成带项目符号的list。
  2. 使用createParagraphBullets,它将项目符号添加到列表中。这样,\t 被转换为嵌套项。
  3. 删除第 1 级的项目符号。
  4. 删除换行符。

示例请求正文:

当上面的流程反映到DocsAPI中batchUpdate方法的request body中时,变成如下

{
  "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
        }
      }
    }
  ]
}

结果:

使用上述请求体时,得到如下结果。

之前:

之后:

注:

  • 尽管我曾寻找过其他不更改现有列表即可使用 Docs API 的方法,但不幸的是,我仍然找不到它们。我认为,为了将深层嵌套项目插入现有列表,在当前阶段,可能需要使用 \t 从第一级开始提供项目。不幸的是,我不确定这是否是规范。因此,例如,将此请求作为未来的请求用于问题跟踪器怎么样? Ref

参考文献: