python - 如何使用 Python API 在 Google Docs 中找到子字符串的 startIndex
问题描述
根据 Google Docs API 文档推荐,我创建了一个文档模板,其中包含“占位符”,例如{{my_text_goes_here}}
为了使用replaceAllText
请求将占位符替换为我自己的文本。到目前为止,一切都很好。
但是,我不仅想插入新文本,而且还想格式化它。我的问题是检索startIndex
这个新文本(或以前的占位符)。API中没有任何find
或locate
请求。
我尝试检索整个文档的文本(此处为指南),找到占位符在文本中的位置,并将其用作startIndex
新文本的格式(使用updateTextStyle
请求)。不幸的是,这个值是不正确的,并且格式没有应用到它应该应用的地方。我想这可能与 UTF-16 编码或某些隐藏字符有关...
我正在尝试做的是一个非常基本的操作,但它需要如此复杂的代码才能实现它使整个 API 变得无用,除了基本的发票组合(我们已经在 20 年前使用 Word 和 Outlook 做到了......)
我错过了什么??
解决方案
可能不像您希望的那样基本,但您可以做什么:
使用方法documents.get将字段设置为body/content/paragraph/elements(startIndex,textRun/content)
。
这将返回一个 JSON 类型:
{
"body": {
"content": [
{},
{
"paragraph": {
"elements": [
{
"startIndex": 1,
"textRun": {
"content": "freter"
}
},
{
"startIndex": 7,
"textRun": {
"content": "\n"
}
}
]
}
},
{
"paragraph": {
"elements": [
{
"startIndex": 8,
"textRun": {
"content": "Htrhyt "
}
},
{
"startIndex": 15,
"textRun": {
"content": "{{my_text_goes_here}}"
}
},
{
"startIndex": 36,
"textRun": {
"content": " gtrtry\n"
}
}
]
}
}
]
}
}
然后,您可以通过编程方式将每个内容的内容与匹配元素的内容进行textRun
对比{{my_text_goes_here}}
并检索startIndex
。
对于上面的示例,您的结果将是:
{
"startIndex": 15,
"textRun": {
"content": "{{my_text_goes_here}}"
}
}
推荐阅读
- java - Spring SimpleTriggerContext 获得正确的 nextExecutionTime
- r - ggplot : 为两个变量的特定值做一个 facet-wrap
- python - 测试数据库在 Django Channels Pytest 测试期间不保留数据
- angular - 刷新几次后如何检查内部选项卡是否可用?
- jquery - 如何禁用CKeditor
来自修改的标记
- mysql - 从我的 PhpMyadmin SQL 选项卡运行以下查询
- angular - 2019 年访问 navigator.mediaDevices.getUserMedia() 的方式
- visual-studio - 恢复 Visual Studio 2019 更新
- php - Laravel 模型类的静态属性
- plotly - 如何从可编辑表中更新绘图/破折号?