我正试图使用谷歌文档api获取谷歌文档内容,但我发现从谷歌文档api返回的json缺少eqaution信息。
示例内容:-谷歌文档摘录请求示例:-
const baseUrl = `https://docs.googleapis.com/v1/documents/${doc_id}`
const response = await googleReq(baseUrl, ctx.accessToken).then(res => {
let data = res.json()
return data
}).catch(err => console.log(err))
const googleReq = (url, token) => {
if (!token) return new Error("No accessToken")
return fetch(url, {
method: 'GET',
headers: {
Authorization: `Bearer ${token}`
}
})
}
example response :-
...
{
"startIndex": 321,
"endIndex": 330,
"equation": {}
}
...
正如您所看到的,等式块没有返回任何内容。我不知道为什么会这样。
答案:
不幸的是,目前您无法从Google Docs API获取方程信息
更多信息:
根据开发人员文档,API返回的equation
块应包含:
suggestedInsertionIds[]
suggestedDeletionIds[]
这些ID将是字母数字字符串,指示编辑器将插入或删除的建议。
此块将不包含任何公式文本或其他相关信息。
唯一的方法:
目前,只有一种方法可以通过编程获得公式文本,那就是使用Google Apps Script方法。
这样做的一个示例脚本是:
// Copyright 2021 Google LLC.
// SPDX-License-Identifier: Apache-2.0
function getEquations() {
const searchElementType = DocumentApp.ElementType.EQUATION
const documentBody = DocumentApp.getActiveDocument().getBody()
const searchResult = null
while (searchResult = documentBody.findElement(searchElementType,searchResult)) {
let par = searchResult.getElement().asEquation()
console.log("Search Result : " + par.getText())
}
}
作为一种解决方法,您可以将其部署为一个web应用程序,将公式文本作为JSON内容提供,然后使用JavaScript中的fetch API获取这些数据,而不是直接使用Google Docs API。
功能请求:
然而,你可以让谷歌知道,这是一个对访问他们的API很重要的功能,你想要求他们实现它
谷歌的Issue Tracker是开发人员报告问题并为其开发服务提出功能请求的地方,我敦促您在那里提出功能请求。最好的归档组件是带有Feature Request
模板的GoogleDocs组件。
参考文献:
- REST资源:文档| Google文档API | Google开发者
- 枚举元素类型|应用程序脚本|谷歌开发者
- 类文档应用程序|应用程序脚本|谷歌开发者
- 类ContainerElement |应用程序脚本|谷歌开发者
基于Web应用程序的工作循环参考:
- Web应用程序|应用程序脚本|谷歌开发者
- 内容服务|应用程序脚本|谷歌开发者
- 从脚本提供JSON
- 类ContentService |应用程序脚本|谷歌开发者