2010-04-24 173 views

回答

20

雖然the docs稱之爲「上傳」,一切都歸結爲發送格式正確HTTP POST要求,所以當然的它實際上是一個新的創造,而不是實際的,否則現有文件的「上傳」。 (通過POST請求的創建與通常描述爲REST API的請求類似,但實際上REST通常使用PUT請求,而不是當然)。

你只需要創建一個上市here代表任何格式的文檔數據的斑點 - 這取決於你的編程語言,最簡單的可能是text/csv的電子表格和application/rtf一個文本文檔 - 再放入以適當格式的POST數據。例如,爲了使在最簡單的方式電子表格(沒有元數據),你可以POST是這樣的:

POST /feeds/default/private/full HTTP/1.1 
Host: docs.google.com 
GData-Version: 3.0 
Authorization: <your authorization header here> 
Content-Length: 81047 
Content-Type: text/csv 
Slug: Example Spreadsheet 

ColumnA, ColumnB 
23, 45 

爲其專用API提供可以提供幫助,這不那麼硬每個特定的編程語言任務;例如,在Python,每the docs,該API建議使用ETags,以避免覆蓋的變化當多個客戶端同時是「上載」(即,在創建或更新文檔)。但是直接準備POST始終是可能的,因爲幾乎REST API被記錄爲協議,這些協議是所有特定於語言的API的基礎。

11

亞歷克斯的回答毫無疑問是正確的,它引出了一個問題:「我該如何通過Google Docs API做到這一點?」

這裏有一個方法(在Python,因爲我是那種人):

import gdata.docs.service 
import StringIO 

client = gdata.docs.service.DocsService() 
client.ClientLogin(username, password, 
        source='Spreadsheet Creation Example') 

content = 'COL_A, COL_B, COL_C, COL_D\ndata1, data2, data3, data4' 
ms = gdata.MediaSource(file_handle=StringIO.StringIO(content), 
         content_type='text/csv', 
         content_length=len(content)) 
entry = client.Upload(ms, 'Test Spreadsheet') 

這是我在http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py發現技術小混搭,我又經由this post發現Google Group for GData Docs API。

的重要見解(我反正)分別爲:

  1. 意識到了MediaSource的構造函數的形參「file_handle」將採取任何類似文件的對象,並
  2. 發現(如OP的隨訪到谷歌集團後提到),該單元測試的例子

的重要來源(我是不是能找到Python特定的開發者指南由亞歷克斯的文檔鏈接引用的 - 可能已遺失或埋在谷歌的移動文件a從code.google.com發送到developers.google.com。亞歷克斯的鏈接會重定向至更通用的文件,顯示大部分爲.NET和Java的例子,但只有一點點的Python)。

+2

嗨@Hephaestus感謝您的信息 - 上面是使谷歌電子表格 - 但是一個人如何可以編程方式創建一個谷歌文件? – BKSpurgeon 2017-04-28 16:10:20

相關問題