如何从 public google 电子表格中检索简单的 xml
How to retrieve simple xml from public google spreadsheet
我在 arduino 设备上工作,我需要从 google 电子表格中检索 public 数据。
到目前为止,我已经发布了电子表格,我可以在 https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full?range=a11:c12 访问它,它可以在浏览器或 arduino 中打开(我正在使用 SIM800 模块,因此它可以毫无问题地使用 HTTPS ).
它的输出是 xml 项(我不是很喜欢 XML):
<entry>
<id>https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full/R12C11</id>
<updated>2018-04-30T05:31:51.590Z</updated>
<category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#cell'/>
<title type='text'>K12</title>
<content type='text'>12345</content>
<link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full/R12C11'/>
<gs:cell row='12' col='11' inputValue='12345' numericValue='12345.0'>12345</gs:cell>
每个请求的单元格都有一个。
问题是在这里我可以看到太多 unneeded/redundant 信息,例如,在 "title" 和 "content" 中,我得到的信息与 "gs:cell"、"updated" 中的信息相同可能实际上有用,但 "link" 和 "category" 对我来说完全是一次性的。
因为我将使用 arduino 和 sim800 模块(无法处理高数据传输速度),所以尽可能简单会很好。
可能有一种方法可以在 HTTP 调用中请求此简化,可能会添加一些参数或将 "full" 更改为其他内容。
我们将不胜感激任何帮助
您想从传播sheet ID 1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4
的range=a11:c12
中检索更简单的响应。如果我的理解是正确的,那么使用查询语言检索值怎么样?我认为可能有几种方法。所以请将此视为其中之一。
模式 1:检索响应为 HTML
https://docs.google.com/spreadsheets/d/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/gviz/tq?range=a11:c12&tqx=out:html
结果:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>A11:C12</title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="0">
<tr style="font-weight: bold; background-color: #aaa;">
<td></td><td></td><td></td>
</tr>
<tr style="background-color: #f0f0f0">
<td>DataInCellA11</td><td>DataInCellB11</td><td>DataInCellC11</td>
</tr>
<tr style="background-color: #ffffff">
<td>DataInCellA12</td><td>DataInCellB12</td><td>DataInCellC12</td>
</tr>
</table>
</body>
</html>
模式 2:以 CSV 格式检索响应
https://docs.google.com/spreadsheets/d/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/gviz/tq?range=a11:c12&tqx=out:csv
结果:
"DataInCellA11","DataInCellB11","DataInCellC11"
"DataInCellA12","DataInCellB12","DataInCellC12"
注:
- 在这种情况下,无法将响应检索为 xml 格式。没有
tqx=out:xml
.
- 作为示例,您可以使用 curl 和浏览器从上述 URL 检索值。
- 如果您想从其他 sheet 中检索值,请使用
gid
的查询。在此示例中,gid=od6
表示第一个 sheet 被省略。
参考:
如果我误解了你的问题,我很抱歉。
我在 arduino 设备上工作,我需要从 google 电子表格中检索 public 数据。
到目前为止,我已经发布了电子表格,我可以在 https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full?range=a11:c12 访问它,它可以在浏览器或 arduino 中打开(我正在使用 SIM800 模块,因此它可以毫无问题地使用 HTTPS ).
它的输出是 xml 项(我不是很喜欢 XML):
<entry>
<id>https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full/R12C11</id>
<updated>2018-04-30T05:31:51.590Z</updated>
<category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#cell'/>
<title type='text'>K12</title>
<content type='text'>12345</content>
<link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/1/public/full/R12C11'/>
<gs:cell row='12' col='11' inputValue='12345' numericValue='12345.0'>12345</gs:cell>
每个请求的单元格都有一个。 问题是在这里我可以看到太多 unneeded/redundant 信息,例如,在 "title" 和 "content" 中,我得到的信息与 "gs:cell"、"updated" 中的信息相同可能实际上有用,但 "link" 和 "category" 对我来说完全是一次性的。
因为我将使用 arduino 和 sim800 模块(无法处理高数据传输速度),所以尽可能简单会很好。
可能有一种方法可以在 HTTP 调用中请求此简化,可能会添加一些参数或将 "full" 更改为其他内容。
我们将不胜感激任何帮助
您想从传播sheet ID 1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4
的range=a11:c12
中检索更简单的响应。如果我的理解是正确的,那么使用查询语言检索值怎么样?我认为可能有几种方法。所以请将此视为其中之一。
模式 1:检索响应为 HTML
https://docs.google.com/spreadsheets/d/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/gviz/tq?range=a11:c12&tqx=out:html
结果:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>A11:C12</title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="0">
<tr style="font-weight: bold; background-color: #aaa;">
<td></td><td></td><td></td>
</tr>
<tr style="background-color: #f0f0f0">
<td>DataInCellA11</td><td>DataInCellB11</td><td>DataInCellC11</td>
</tr>
<tr style="background-color: #ffffff">
<td>DataInCellA12</td><td>DataInCellB12</td><td>DataInCellC12</td>
</tr>
</table>
</body>
</html>
模式 2:以 CSV 格式检索响应
https://docs.google.com/spreadsheets/d/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/gviz/tq?range=a11:c12&tqx=out:csv
结果:
"DataInCellA11","DataInCellB11","DataInCellC11"
"DataInCellA12","DataInCellB12","DataInCellC12"
注:
- 在这种情况下,无法将响应检索为 xml 格式。没有
tqx=out:xml
. - 作为示例,您可以使用 curl 和浏览器从上述 URL 检索值。
- 如果您想从其他 sheet 中检索值,请使用
gid
的查询。在此示例中,gid=od6
表示第一个 sheet 被省略。
参考:
如果我误解了你的问题,我很抱歉。