2010-04-24 36 views
18

documentation for Google Documents List API, có vẻ như bạn có thể tạo tài liệu cục bộ và tải lên. Không có cách nào để thực sự tạo và chỉnh sửa tài liệu trên Google Documents thông qua API không?Làm cách nào để tạo tài liệu trong Google Documents theo lập trình?

+0

Trừ khi bạn tạo bot và xác thực vào Google Documents để truy cập vào giao diện người dùng, tôi không nghĩ là có thể mà không quá hung tợn. Nó đơn giản hơn để sửa đổi cục bộ và sau đó tải nó lên. –

+0

câu hỏi chính hãng .... –

Trả lời

20

Trong khi the docs gọi nó là "upload", mọi thứ đều nắm để gửi một định dạng thích hợp HTTP POST yêu cầu, vì vậy tất nhiên nó có thể thực sự là một sáng tạo mới chứ không phải là một thực tế "tải lên" của một tập tin khác hiện có. (Việc tạo thông qua các yêu cầu POST tương tự như thông thường được mô tả là REST API, mặc dù trong thực tế REST bạn thường sử dụng yêu cầu PUT thay vì tất nhiên).

Bạn chỉ cần tạo một blob của dữ liệu đại diện cho tài liệu của bạn trong bất cứ định dạng được liệt kê here - tùy thuộc vào ngôn ngữ lập trình của bạn, đơn giản nhất có thể text/csv cho một bảng tính và application/rtf cho một văn bản tài liệu - sau đó đưa vào trong một dữ liệu POST được định dạng phù hợp. Ví dụ, để tạo ra một bảng tính theo cách đơn giản (không có siêu dữ liệu), bạn có thể POST cái gì đó như:

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 

Mỗi ngôn ngữ lập trình cụ thể mà một API chuyên dụng được cung cấp có thể cung cấp sự giúp đỡ với điều này không quá khó bài tập; ví dụ: trong Python, theo số the docs, API đề xuất sử dụng ETags để tránh ghi đè thay đổi khi nhiều khách hàng đồng thời "tải lên" (tức là tạo hoặc cập nhật tài liệu). Nhưng việc chuẩn bị POST trực tiếp là luôn luôn có thể, vì API REST gần như được ghi lại là giao thức nằm dưới tất cả các API dành riêng cho ngôn ngữ.

11

Câu trả lời của Alex, trong khi chắc chắn đúng, đặt ra câu hỏi: "làm cách nào để làm điều đó thông qua API Google Documents?"

Đây là một cách (bằng Python, vì tôi rằng loại con trai):

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') 

Đây là một mashup nhỏ của kỹ thuật mà tôi tìm thấy trong http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py, mà tôi lần lượt tìm thấy qua this post từ Nhóm Google cho API tài liệu GData.

Các hiểu biết quan trọng (cho tôi anyway) là:

  1. nhận ra rằng tham số chính thức các nhà xây dựng của MediaSource "file_handle" sẽ mất bất kỳ đối tượng tập tin như thế, và
  2. phát hiện (như followup của OP đến Bài đăng trên Google Group đề cập đến) rằng các bài kiểm tra đơn vị là một nguồn ví dụ tuyệt vời

(Tôi không thể tìm thấy hướng dẫn dành cho nhà phát triển cụ thể của Python được tham chiếu bởi liên kết tài liệu của Alex - có thể nó đã bị mất hoặc chôn trong Google di chuyển tài liệu ssets từ code.google.com đến developers.google.com. Bây giờ, liên kết của Alex chuyển hướng đến tài liệu chung chung hơn hiển thị hầu hết các ví dụ .NET và Java, nhưng chỉ một chút Python.)

+2

Xin chào @Hephaestus cảm ơn vì thông tin - ở trên là để tạo bảng tính google - nhưng làm cách nào để tạo tài liệu google có lập trình? – BKSpurgeon

Các vấn đề liên quan