新的Google Spreadsheets发布限制

时间:2014-01-17 15:31:12

标签: google-sheets

我正在测试新的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的图表工具中生成视觉效果。

有谁知道怎么做?

10 个答案:

答案 0 :(得分:56)

新的Google电子表格使用不同的网址(只需复制<KEY>):

  • 新表:https://docs.google.com/spreadsheets/d/<KEY>/pubhtml
  • CSV文件: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格式的单元格或列范围(或任何您的感觉)的简单方法:

https://docs.google.com/spreadsheet/tq?key=YOUR-KEY&gid=1&tq=select%20A,%20B&tqx=reqId:1;out:html;%20responseHandler:webQuery

缺点是你的文档仍然可以通过公共链接获得,但如果你想导出/导入数据说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解决方法:

  1. 转到现有的新Google表格
  2. 转到&#34;文件 - &gt;新 - &gt;电子表格&#34;
  3. &#34;文件 - &gt;发布到网络上......&#34;现在可以选择发布csv版本
  4. 我认为这实际上是创建一张旧的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)

目前的答案不再适用。以下对我有用: