2011-09-26 60 views
7

Tôi đang làm việc bằng Python và cố truy xuất dữ liệu từ Bảng tính công khai của Google (this one) nhưng đang gặp khó khăn với the developer documentation.Truy xuất dữ liệu từ Bảng tính Google công khai bằng thư viện gdata?

Tôi muốn tránh xác thực ứng dụng khách nếu có thể vì đây là bảng tính công khai.

Đây là mã hiện tại của tôi, với thư viện gdata:

client = gdata.spreadsheet.service.SpreadsheetsService() 
key = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' 
worksheets_feed = client.GetWorksheetsFeed(key) 

này không thành công trên dòng 3 với BadStatusLine.

Tôi có thể đọc dữ liệu từ bảng tính bằng cách nào?

+0

Richard không chắc chắn nếu điều này sẽ giúp bạn, nhưng bạn có thể xuất bảng tính dưới dạng Excel và sử dụng xlrd (http://pypi.python.org/pypi/xlrd) để đọc dữ liệu. –

+2

Cảm ơn! Tôi muốn sử dụng gdata, nhưng tài liệu hướng dẫn là không đúng, không ai biết cách sử dụng nó ... – Richard

Trả lời

17

Tôi muốn bắt đầu bằng cách lặp lại ý kiến ​​của bạn rằng Tài liệu thực sự kém. Nhưng, đây là những gì tôi đã có thể tìm ra cho đến nay.

đăng Công

Nó là rất quan trọng là bảng tính của bạn được "xuất bản lên web" như trái ngược với chỉ là "Công khai trên web." Đầu tiên là đạt được bằng cách vào mục "File -> Publish to The Web ...". Thứ hai là đạt được bằng cách nhấp vào nút "Chia sẻ" ở góc trên bên trái của bảng tính.

Tôi đã kiểm tra và bảng tính của bạn có khóa = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' chỉ là "Công khai trên web". Tôi đã tạo một bản sao của nó để chơi với mã ví dụ của tôi. Bản sao của tôi có khóa = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE' mà bạn sẽ thấy trong mã mẫu của tôi sau này.

Điều này "Công khai trên web" so với "Xuất bản trên Web" vô nghĩa rõ ràng là một điểm của sự nhầm lẫn phổ biến. Nó thực sự được ghi lại trong một hộp màu đỏ trong các phần "Visibilities and Projections" của tài liệu API chính. Tuy nhiên, thật khó để đọc tài liệu đó.

Tầm nhìn và Dự

Như rằng cùng một tài liệu cho biết, có những dự báo không phải là "đầy đủ." Và trên thực tế (không có giấy tờ), "đầy đủ" dường như không chơi độc đáo với khả năng hiển thị "công khai" cũng rất quan trọng để đặt khi thực hiện cuộc gọi chưa được xác thực.

Bạn có thể thu thập dữ liệu từ pydocs mà nhiều phương pháp trong đối tượng SpreadsheetsService có thể lấy thông số "hiển thị" và "chiếu". Tôi chỉ biết sự công bằng "công khai" và "riêng tư". Nếu bạn học về bất kỳ người nào khác, tôi cũng muốn biết về họ. Có vẻ như "công khai" là những gì bạn nên sử dụng khi thực hiện cuộc gọi chưa được xác thực.

Đối với Projections, nó thậm chí còn phức tạp hơn. Tôi biết dự đoán "đầy đủ", "cơ bản" và "giá trị". Tôi chỉ có may mắn và tìm thấy phép chiếu "giá trị" bằng cách đọc mã nguồn tới thư viện JavaScript tuyệt vời Tabletop. Và, đoán xem, đó là bí mật thiếu thành phần để làm cho mọi thứ hoạt động.

Mã Working

Dưới đây là một số mã, bạn có thể sử dụng để truy vấn bảng từ bản sao của bảng tính của bạn.

#!/usr/bin/python 
from gdata.spreadsheet.service import SpreadsheetsService 

key = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE' 

client = SpreadsheetsService() 
feed = client.GetWorksheetsFeed(key, visibility='public', projection='basic') 

for sheet in feed.entry: 
    print sheet.title.text 

Mẹo ** ** tôi thấy nó thực sự hữu ích khi làm việc với các API trăn khủng khiếp tài liệu để sử dụng phương pháp dir() trong một thông dịch chạy python để tìm hiểu thêm về các loại thông tin tôi có thể nhận được từ trăn các đối tượng. Trong trường hợp này, nó không giúp quá nhiều bởi vì sự trừu tượng hóa trên XML và API dựa trên URL khá kém.

Nhân tiện, tôi chắc chắn bạn sẽ muốn bắt đầu xử lý dữ liệu thực tế trong bảng tính, vì vậy tôi sẽ tiếp tục và thêm một con trỏ nữa. Dữ liệu cho mỗi hàng được tổ chức dưới dạng từ điển có thể được tìm thấy bằng cách sử dụng GetListFeed (key, sheet_key, visibility = 'public', projection = 'values'). [0] .custom

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