首页 > 解决方案 > 如何使用 Google Docs API 缩进项目符号列表

问题描述

从 Google Doc 开始,如下所示:

* Item

我希望进行一系列 API 调用以将文档转换为:

* Item
   - Subitem

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

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

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

* Item
*        Subitem

有人对我可能做错的事情有任何想法吗?

标签: google-docs-api

解决方案


我相信你的目标如下。

  • 您想使用 Google Docs API 创建一个嵌套列表。

  • 起初,Google 文档中存在一个列表,其中包含一个项目作为 1 级。如下。

      - item1
    
  • 在这种情况下,您希望将嵌套项插入到现有列表中作为第二级。如下。

      - item1
         - item2
    

实现目标的要点:

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

  1. 使用请求 \n\titem2\n为第二级插入文本。insertText
    • 在这种情况下,第一层也被插入。似乎为了插入深层项目,需要从第 1 级开始设置并转换为带有项目符号的列表。
  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
        }
      }
    }
  ]
}

结果:

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

前:

在此处输入图像描述

后:

在此处输入图像描述

笔记:

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

参考:


推荐阅读