如何从公共谷歌电子表格中检索简单的xml

时间:2018-05-14 14:57:52

标签: google-sheets google-spreadsheet-api

我正在使用arduino设备,我需要从谷歌电子表格中检索公共数据。

到目前为止,我已经发布了电子表格,我可以在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>

其中一个请求的每个单元格。 问题是,在这里我可以看到太多不需要/冗余的信息,例如,在“标题”和“内容”中我获得与“gs:cell”中相同的信息,“updated”实际上可能是有用的但是“链接”而“类别”对我来说是完整的。

由于我将使用arduino和sim800模块(能够处理高数据传输速度),因此尽可能简单。

可能有一种方法可以在HTTP调用中请求简化,可能会添加一些参数或将“full”更改为其他内容。

任何帮助都会非常苛刻

1 个答案:

答案 0 :(得分:1)

您想要从电子表格ID val c0@Cons(_,_) = Stream(1,2,3,4,5,6).map(_+10).filter(_%2==0) // **STDOUT** //map h:1 //filter h:11 //map h:2 //filter h:12 c0.h() //res0: Int = 12 val c1@Cons(_,_) = c0.t() // **STDOUT** //map h:3 //filter h:13 //map h:4 //filter h:14 c1.h() //res1: Int = 14 val c2@Cons(_,_) = c1.t() // **STDOUT** //map h:5 //filter h:15 //map h:6 //filter h:16 c2.h() //res2: Int = 16 c2.t() //res3: Stream[Int] = Empty 的{​​{1}}检索更简单的回复。如果我的理解是正确的,那么如何使用查询语言检索值?我认为可能有几种方法。所以请把它想象成其中之一。

模式1:以HTML格式检索响应

range=a11:c12

结果:

1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4

模式2:以CSV

的形式检索响应
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>

注意:

  • 在这种情况下,无法以xml格式检索响应。没有https://docs.google.com/spreadsheets/d/1uphj-Oq3Xt6ImHJdezAUEX4u41_w1NNMlZU4Flr6lc4/gviz/tq?range=a11:c12&tqx=out:csv
  • 作为示例,您可以使用上述网址中的curl和浏览器检索值。
  • 如果要从其他工作表中检索值,请使用"DataInCellA11","DataInCellB11","DataInCellC11" "DataInCellA12","DataInCellB12","DataInCellC12" 的查询。在此示例中,tqx=out:xml表示省略第1张。

参考:

如果我误解了你的问题,我很抱歉。