我正在测试新的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
https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GUID>&format=csv
电子表格的GUID与标签号有关.
/!\您必须使用具有链接设置的任何人共享您的文档.
小智 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 = <一定数量>"和它的工作!希望它能帮到每个人.
如果您为电子表格启用"任何具有链接共享的人",则可以通过以下方法获取HTML,CSV,XML,JSON格式的单元格或列范围(或任何您的感觉)的简单方法:
这方面的缺点是您的文档仍然可以通过公共链接完全获得,但如果您想导出/导入数据说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;
Run Code Online (Sandbox Code Playgroud)