2016-12-28 68 views
0

我有一个位于谷歌驱动器上的在线电子表格。此电子表格是公开的,可通过网址访问。向公众添加export?format=csv可打开下载提示,允许客户端查看器通过选择文件位置并单击“下载”将CSV版本的在线电子表格文件下载到其计算机。从在线下载链接而不是直接访问PHP的文件

我想要做的就是让我的PHP脚本与谷歌的提供下载链接https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv

而不是像www.example.com/file.csv

直接下载链接互动,因为谷歌使用的?format=csv$_GET值直接客户端对于下载,我不能只使用include_once()或类似的方法来访问我的脚本中的文件,因为这将访问负责显示谷歌电子表格的HTML文件。

如果不是直接下载链接,我如何通过PHP访问此在线下载? PHP以外的其他方法也是受欢迎的,只要我可以通过PHP访问CSV文件的数据(或者暂时或永久下载到服务器)

回答

0

经过多日的困惑解决了一个问题后,我终于根据网上的多个教程和示例来想出这个问题。他们没有一个与我的需求完全匹配,但基本上这是我想出的从互联网下载已发布的Google电子表格而不使用使用Google API

$fileid = "spreadsheet file id here"; 
$url = "https://docs.google.com/spreadsheets/d/".$fileid."/export?format=csv&id=".$fileid; 

$newfilename = "newfile"; 

$file = fopen($url,"r"); 

$output = fopen($newfilename.'.csv', 'wb'); 

while (($data = fgetcsv($file, 1000, ",")) !== FALSE) { 
     fputcsv($output, $data); 
} 

fclose($file); 
fclose($output); 

在运行该代码,脚本从谷歌电子表格和输出的数据通过$newfilename.csvtext/csv格式确定新创建的文件。

我希望这可以帮助未来的人。我已经看到许多围绕SO和网络其他部分的主题,关于如何在没有API的情况下以CSV格式访问Google Spreadsheet数据,并且从未找到不涉及API的真实答案,我想我已经做到了!

1

简单file_get_contents()应该在你的情况下工作得很好。

$content = file_get_contents('https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv'); 
+0

在这种情况下,这只是给了我周围的HTML页面。而不是把CSV数据作为'$ content'给我。任何其他想法? – pattyd