繁体   English   中英

新的Google Spreadsheets发布限制

[英]New Google Spreadsheets publish limitation

我正在测试新的Google Spreadsheets,因为我确实需要一项新功能:200张限制已被取消(更多信息请访问: https//support.google.com/drive/answer/3541068 )。

但是,我无法像旧版本那样将电子表格发布到CSV。 我转到“文件”>“发布到网络”,没有更多选项可以发布“所有工作表”或某些工作表,也无法指定要发布到CSV等的单元格范围。

发布的“不支持的功能”文档中未提及此限制: https//support.google.com/drive/answer/3543688

是否有其他方式可以启用或实际上它已被排除在新版本之外?

我的用例是:我们将Bigquery结果检索到电子表格中,我们使用“自动发布更新”功能自动将工作表发布为CSV,然后生成CSV URL,将其放入读取CSV URL的图表工具中以生成视觉效果。

有谁知道如何做到这一点?

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

  • 新表: https://docs.google.com/spreadsheets/d/<KEY>/pubhtmlhttps://docs.google.com/spreadsheets/d/<KEY>/pubhtml
  • CSV文件: https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csvhttps://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与标签号有关。

/!\\您必须使用具有链接设置的任何人共享您的文档。

这是解决方案,只需这样写:

https://docs.google.com/spreadsheets/d/ < KEY >/ export?format=csv&id= < KEY >

我知道将KEY写两次很奇怪,但它完美无缺。 来自工作的队友通过在Google Docs中打开excel文件,然后将文件 - >下载为 - >逗号分隔值来发现这一点。 然后,在浏览器的下载部分会显示指向CSV文件的链接,如下所示: https//docs.google.com/spreadsheets/d/ <KEY> / export?format = csv&id = <KEY>&gid = <一些号码>但它并不以这种格式的工作,我朋友做的是去除“&GID = <一定数量>”和它的工作! 希望它能帮到每个人。

如果您为电子表格启用“任何具有链接共享的人”,则可以通过以下方法获取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,这是一个完美的方式。

它不会帮助每个人,但我已经制作了一个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;

将Google电子表格下载为CSV的正确网址为:

https://docs.google.com/spreadsheets/export?id=<ID>&exportFormat=csv

这是另一个临时的非PHP解决方法:

  1. 转到现有的新Google工作表
  2. 转到“文件 - >新建 - >电子表格”
  3. 在“文件 - >发布到网络...”下,现在可以选择发布csv版本

我相信这实际上是创建一个旧的Google表格,但出于我的目的(将谷歌表格数据从客户端或我自己导入R进行统计分析),它一直有效,直到他们希望更新此功能。

我也在Google网上论坛中发布了此论坛,请在此处找到:

https://productforums.google.com/forum/#!topic/docs/An-nZtjaupU

这个新功能似乎已经消失了。 我没有看到任何发布csv / tsv版本的选项。 我可以通过导出下载tsv / csv,但只有链接的其他人无法使用它(它将它们重定向到谷歌文档登录表单)。

我发现了一个修复! 所以我发现在此更改之前的旧电子表格仍然只允许发布某些工作表。 所以我制作了一份旧电子表格的副本,清除了数据,将我当前的信息复制并粘贴到其中,现在我很乐意只发布一张大型电子表格。 好极了

我能够对结果实现查询,请参阅此表

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地图上绘制它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM