2016-12-28 36 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