google-docs-api - 如何使用 Google Docs API 缩进项目符号列表
问题描述
从 Google Doc 开始,如下所示:
* Item
我希望进行一系列 API 调用以将文档转换为:
* Item
- Subitem
但是,我不知道如何使用 API 做到这一点。ACreateParagraphBulletRequest
没有我可以指定的缩进级别。文档建议:
每个段落的嵌套级别将通过计算每个段落前面的前导选项卡来确定。为避免项目符号和相应段落之间的空间过多,此请求将删除这些前导选项卡。这可能会更改部分文本的索引。
但是,将制表符添加到 an 的开头InsertTextRequest
将添加制表符,而不是更改缩进:
* Item
* Subitem
有人对我可能做错的事情有任何想法吗?
解决方案
我相信你的目标如下。
您想使用 Google Docs API 创建一个嵌套列表。
起初,Google 文档中存在一个列表,其中包含一个项目作为 1 级。如下。
- item1
在这种情况下,您希望将嵌套项插入到现有列表中作为第二级。如下。
- item1 - item2
实现目标的要点:
在这种情况下,为了将项目作为第二级插入到现有列表中,根据我的经验,我无法直接插入它。就我而言,作为一种解决方法,我使用以下流程。
- 使用请求
\n\titem2\n
为第二级插入文本。insertText
- 在这种情况下,第一层也被插入。似乎为了插入深层项目,需要从第 1 级开始设置并转换为带有项目符号的列表。
- 使用
createParagraphBullets
,它将项目符号添加到列表中。通过这个,\t
被转换为嵌套项。 - 删除第一级的子弹。
- 删除换行符。
示例请求正文:
当上述流程反映到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
. 不幸的是,我不确定这是否是规范。那么,例如,为问题跟踪器请求这个作为未来的请求怎么样?参考