新的Google Spreadsheets发布限制

ste*_*vey 40 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,将其放入读取CSV URL的图表工具中以生成视觉效果.

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

s4t*_*ori 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与标签号有关.

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

  • @Paul McMurdie:尝试删除"gid = 0":https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv (4认同)
  • 该链接对我不起作用.`gid'自动从0更改为更长的数字.页面跳转到"找不到页面"页面,即使该键肯定是正确的.这一切都让人很困惑! (2认同)
  • `gid`是所需的工作簿ID.电子表格可能有多个工作簿.第一个通常有0的gid,但如果你添加更多,他们将有随机数. (2认同)

小智 25

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

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 = <一定数量>"和它的工作!希望它能帮到每个人.

  • 这对我有用.要在电子表格中下载特定工作表,请使用&gid = <NUMBER>,其中<NUMBER>可以通过访问Google文档中的工作表获得.正确的数字将在地址栏中显示为URL末尾的#gid = <NUMBER>. (2认同)

Pak*_*tas 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,这是一个完美的方式.


Jam*_*e G 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;
Run Code Online (Sandbox Code Playgroud)