为什么从 google 文档 api 返回时 json 中的方程式对象为空?
Why is the equation object empty in json when returned from the google doc api?
我正在尝试使用 google doc api 获取 google 文档内容,但我看到从 google 文档 api 返回的 json 是缺少方程式信息。
示例内容:-
google doc excerpt
请求示例:-
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 文档 API.
中获取公式信息
更多信息:
根据 developer documentation,API 返回的 equation
块应包含:
suggestedInsertionIds[]
suggestedDeletionIds[]
这些 ID 将是字母数字字符串,表示编辑者会插入或删除的建议。
此块将不包含任何公式文本或其他相关信息。
唯一的方法:
目前,只有一种以编程方式获取公式文本,那就是使用 Google Apps 脚本方法。
执行此操作的示例脚本是:
// 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())
}
}
作为一种解决方法,您可以将其部署为网络应用程序,将等式文本作为 JSON 内容提供,然后使用 JavaScript 中的提取 API 获取此数据而不是直接使用 Google 文档 API。
功能请求:
但是,您可以让 Google 知道这是一项对于访问他们的 API 很重要的功能,并且您希望请求他们实现它。
Google 的 Issue Tracker is a place for developers to report issues and make feature requests for their development services, I'd urge you to make a feature request there. The best component to file this under would be the Google Docs component,使用 Feature Request
模板。
参考文献:
- REST Resource: documents | Google Docs API | Google Developers
- Enum ElementType | Apps Script | Google Developers
- Class DocumentApp | Apps Script | Google Developers
- Class ContainerElement | Apps Script | Google Developers
基于 Web 应用程序的 Workround 参考资料:
我正在尝试使用 google doc api 获取 google 文档内容,但我看到从 google 文档 api 返回的 json 是缺少方程式信息。
示例内容:- google doc excerpt 请求示例:-
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 文档 API.
中获取公式信息更多信息:
根据 developer documentation,API 返回的 equation
块应包含:
suggestedInsertionIds[]
suggestedDeletionIds[]
这些 ID 将是字母数字字符串,表示编辑者会插入或删除的建议。
此块将不包含任何公式文本或其他相关信息。
唯一的方法:
目前,只有一种以编程方式获取公式文本,那就是使用 Google Apps 脚本方法。
执行此操作的示例脚本是:
// 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())
}
}
作为一种解决方法,您可以将其部署为网络应用程序,将等式文本作为 JSON 内容提供,然后使用 JavaScript 中的提取 API 获取此数据而不是直接使用 Google 文档 API。
功能请求:
但是,您可以让 Google 知道这是一项对于访问他们的 API 很重要的功能,并且您希望请求他们实现它。
Google 的 Issue Tracker is a place for developers to report issues and make feature requests for their development services, I'd urge you to make a feature request there. The best component to file this under would be the Google Docs component,使用 Feature Request
模板。
参考文献:
- REST Resource: documents | Google Docs API | Google Developers
- Enum ElementType | Apps Script | Google Developers
- Class DocumentApp | Apps Script | Google Developers
- Class ContainerElement | Apps Script | Google Developers