2017-03-17 91 views
0

我正在使用Google Driver API python庫以CSV格式下載文件。Google Drive API V3 export_media缺少內容長度和內容範圍

google_drive_service = get_service() 
mimeType = 'text/csv' 
request = google_drive_service.files().export_media(fileId='abc', mimeType=mimeType) 
fh = io.BytesIO() 
downloader = MediaIoBaseDownload(fh, request) 
done = False 
while not done: 
    status, done = downloader.next_chunk() 
    print "Download %d%%." % int(status.progress() * 100) 
fh.seek(0) 
content = fh.getvalue() 

由於它是一個大的選項卡,下載過程按塊分解。它不斷打印出「下載0%」。當代碼檢查下載過程時,我通過庫代碼循環。它始終顯示「下載0%」的原因是因爲http響應沒有「內容範圍」和「內容長度」標題,這會導致進程檢查問題。

如果您有興趣複製此過程。創建電子表格並填寫列'A:E'和行'1:10000'的單元格值。讓我知道是否有人有同樣的問題或有線索說明爲什麼會發生這種情況。這裏是Gdrive代碼:https://github.com/google/google-api-python-client/blob/master/googleapiclient/http.py#L664-L691

回答

0

如果http請求詢問它們,http響應將只包含內容範圍標頭。根據https://developers.google.com/drive/v3/web/manage-downloads,部分下載不支持導出,僅用於下載。

您可以嘗試的幾件事: - 1.在v2 API中,文件資源包含一個靜態exportLinks數組。您可以嘗試在適當的鏈接上進行部分下載。您將需要使用相同的憑據來執行您自己的REST,而不是使用Python庫。 1.您可以使用Google Spreadsheets的「發佈」功能創建可下載的CSV鏈接。