新的Google Spreadsheets发布了限制
我正在testing新的Google Spreadsheets,因为有一个我真正需要的新function:已解除200张限制(详情请参阅: https : //support.google.com/drive/answer/3541068 )。
但是,我无法像在旧版本中那样将电子表格发布为CSV。 我去'文件>发布到networking',没有更多的选项发布'所有工作表'或某些工作表,您不能指定单元格范围发布到CSV等。
此限制未在发布的“不支持的function”文档中提到: https : //support.google.com/drive/answer/3543688
有没有其他的方式启用或实际上已被排除在新版本之外?
我的用例是:我们将Bigquery结果检索到电子表格中,我们使用“自动发布更新”function自动发布CSV表格,然后生成CSV URL,将其放入图表工具中,读取CSV URL以生成视觉效果。
有谁知道如何做到这一点?
新的Google电子表格使用不同的url(只需复制您的<KEY>
):
- 新表:
https://docs.google.com/spreadsheets/d/<KEY>/pubhtml
:https://docs.google.com/spreadsheets/d/<KEY>/pubhtml
- CSV文件:
https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csv
:https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csv
KEY>/https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csv
csv
电子表格的GUID与制表符号码相关。
/!\您必须使用具有链接设置的任何人共享您的文档。
这里是解决scheme,就像这样写:
https://docs.google.com/spreadsheets/d/ < KEY >/ export?format=csv&id= < KEY >
我知道写两次KEY是很奇怪的,但它完美地工作。 工作中的队友通过打开Google Docs中的excel文件,然后select文件 – >下载为 – >逗号分隔值,发现了这一点。 然后,在浏览器的下载部分中会出现一个CSV文件的链接,如下所示: https : //docs.google.com/spreadsheets/d/ <KEY> / export?format = csv&id = <KEY>&gid = <一些数字>但是这种格式不起作用,我的朋友做的是删除“&gid = <某些数字>”,它的工作! 希望它有助于每个人。
这不会帮助每个人,但我已经做了一个PHP脚本来读取HTML到数组中。
我已经添加到最后转换回CSV。 希望这将有助于一些有权访问PHP的人。
$html_link = "https://docs.google.com/spreadsheets/d/XXXXXXXXXX/pubhtml"; $local_html = "sheets.html"; $file_contents = file_get_contents($html_link); file_put_contents($local_html,$file_contents); $dom = new DOMDocument(); $html = @$dom->loadHTMLFile($local_html); //Added a @ to hide warnings - you might remove this when testing $dom->preserveWhiteSpace = false; $tables = $dom->getElementsByTagName('table'); $rows = $tables->item(0)->getElementsByTagName('tr'); $cols = $rows->item(0)->getElementsByTagName('td'); //You'll need to edit the (0) to reflect the row that your headers are in. $row_headers = array(); foreach ($cols as $i => $node) { if($i > 0 ) $row_headers[] = $node->textContent; } foreach ($rows as $i => $row){ if($i == 0 ) continue; $cols = $row->getElementsByTagName('td'); $row = array(); foreach ($cols as $j => $node) { $row[$row_headers[$j]] = $node->textContent; } $table[] = $row; } //Convert to csv $csv = ""; foreach($table as $row_index => $row_details){ $comma = false; foreach($row_details as $value){ $value_quotes = str_replace('"', '""', $value); $csv .= ($comma ? "," : "") . ( strpos($value,",")===false ? $value_quotes : '"'.$value_quotes.'"' ); $comma = true; } $csv .= "\r\n"; } //Save to a file and/or output file_put_contents("result.csv",$csv); print $csv;
如果您为电子表格启用了“任何有链接共享的人”,以下是通过查询以HTML,CSV,XML,JSON格式导出单元格或列(或任何您感觉喜欢的)范围的简单方法:
- 对于tqvariables读取查询语言参考 。
- 对于tqxvariables读取请求格式的引用 。
但是,如果你的文档仍然可以通过公共链接完全获取,但是如果你想导出/导入数据来表示Excel,这是一个完美的方法。
这是另一个临时的非PHP解决方法:
- 转到现有的新谷歌表
- 转到“文件 – >新build – >电子表格”
- 在“文件 – >发布到networking…”下可以select发布csv版本
我相信这实际上是创build一个旧的Google工作表,但为了我的目的(从客户端或我自己导入到R进行统计分析)谷歌工作表数据,直到他们希望更新此function。
我在Google Groups论坛上也发布了这个,请在这里find它:
https://productforums.google.com/forum/#!topic/docs/An-nZtjaupU
将CSV电子表格下载为CSV的正确url为:
https://docs.google.com/spreadsheets/export?id=<ID>&exportFormat=csv
这个新function似乎已经消失了。 我没有看到发布csv / tsv版本的任何选项。 我可以通过导出下载tsv / csv,但是仅仅通过链接(将它们redirect到Google Docslogin表单),这是不可用的。
我发现一个修复! 所以我发现在这个改变之前的旧电子表格仍然只允许发布特定的表格。 所以我做了一个旧的电子表格的副本,清除了数据,复制并粘贴我的当前信息,现在我很高兴地发布我的大型电子表格的单张。 好极了
我能够实现查询结果,请参阅此表
https://docs.google.com/spreadsheets/d/1LhGp12rwqosRHl-_N_N8eTjTwfFsHHIBHUFMMyhLaaY/gviz/tq?tq=select+A,B,I,J,K+where+B%3E=4.5&pli=1
电子表格会从地震中提取数据,但是我只想selectMAG 4.5+地震,因此它使查询和列,只是一个问题:
我不能parsing结果,我试图解码为JSON,但无法parsing它。 我想能够显示为HTML或CSV或如何parsing这个? 例如能够将其绘制在Google地图上。
目前的答案不再工作。 以下为我工作:
- 做文件 – >“发布到networking”并select“开始发布”和格式。 我select文本(这是TSV)
- 现在只需将url复制到https://docs.google.com/spreadsheet/pub?key=YOUR_KEY&single=true&gid=0&output=txt即可;