我正在测试新的Google Spreadsheets,因为我确实需要一项新功能:200张限制已被取消(更多信息请参见https://support.google.com/drive/answer/3541068)。
但是,我无法像旧版本那样将电子表格发布到CSV。我转到“文件>发布到网络”,没有更多选项可以发布“所有工作表”或某些工作表,也无法指定要发布到CSV等的单元格范围。
在https://support.google.com/drive/answer/3543688发布的“不支持的功能”文档中未提及此限制
是否有其他方式可以启用或实际上它已被排除在新版本之外?
我的用例是:我们将Bigquery结果检索到电子表格中,我们使用“自动发布更新”功能自动将工作表发布为CSV,然后生成CSV URL,该URL将放入读取CSV URL的图表工具中生成视觉效果。
有谁知道怎么做?
答案 0 :(得分:56)
新的Google电子表格使用不同的网址(只需复制<KEY>
):
https://docs.google.com/spreadsheets/d/<KEY>/pubhtml
https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csv
电子表格的GUID与标签号有关。
/!\您必须使用有链接的任何人设置来共享您的文档。
答案 1 :(得分:25)
这是解决方案,只需这样写:
<强> https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv&id=<KEY&GT; 强>
我知道将KEY写两次很奇怪,但它完美无缺。来自工作的队友通过在Google Docs中打开excel文件,然后在File - &gt;中发现了这一点。下载为 - &gt;逗号分隔值。然后,在浏览器的下载部分显示CSV文件的链接,如下所示: https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv&id=<KEY>&gid=<SOME NUMBER&gt; 但它不能以这种格式工作,我朋友所做的就是删除&#34;&amp; gid =&lt; SOME NUMBER&gt;&#34;它工作了!希望它能帮到每个人。
答案 2 :(得分:7)
如果为电子表格启用“具有链接共享的任何人”,则可以通过以下方法获取HTML,CSV,XML,JSON格式的单元格或列范围(或任何您的感觉)的简单方法:
缺点是你的文档仍然可以通过公共链接获得,但如果你想导出/导入数据说Excel,这是一个完美的方式。
答案 3 :(得分:6)
它不会帮助每个人,但我已经制作了一个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;
答案 4 :(得分:3)
以CSV格式下载Google电子表格的正确网址为:
https://docs.google.com/spreadsheets/export?id=<ID>&exportFormat=csv
答案 5 :(得分:2)
这是另一个临时的非PHP解决方法:
我认为这实际上是创建一张旧的Google表格,但出于我的目的(将谷歌工作表数据从客户端或我自己导入R进行统计分析),它一直有效,直到他们希望更新此功能。
我也在Google网上论坛中发帖,请在此处找到:
https://productforums.google.com/forum/#!topic/docs/An-nZtjaupU
答案 6 :(得分:1)
这个新功能似乎已经消失了。我没有看到任何发布csv / tsv版本的选项。我可以通过导出下载tsv / csv,但只有链接的其他人无法使用它(它将它们重定向到谷歌文档登录表单)。
答案 7 :(得分:1)
我找到了修复!所以我发现在此更改之前的旧电子表格仍然只允许发布某些工作表。所以我制作了一份旧电子表格的副本,清除了数据,将我当前的信息复制并粘贴到其中,现在我很乐意只发布一张大型电子表格。耶
答案 8 :(得分:1)
我能够对结果实现查询,请参阅此表
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
电子表格从地震中获取数据,但我只是想选择MAG 4.5+地震,因此它会产生查询和列,只是一个问题:
我无法解析结果,我试图解码为json但无法解析它。 我希望能够将其显示为HTML或CSV或如何解析此问题?例如,可以在Google地图上绘制它。
答案 9 :(得分:1)
目前的答案不再适用。以下对我有用: