2010-08-09 36 views
5

Tôi đã viết một chương trình C# bằng cách sử dụng API của Google Documents .NET để đọc một trang tính của Google vào một DataTable được cung cấp tên người dùng, mật khẩu, tên bảng tính và tên trang tính. tất cả điều này hoạt động tốt, nhưng mô hình lập trình dường như xoay quanh đưa ra các dịch vụ bảng tính một tập hợp các thông tin, và sau đó gọt xuống ăn quả để có được một bảng tính cụ thể/bảng, tức làTôi làm cách nào để truy cập các bảng tính công khai bằng API C# của Google Documents?

Bây giờ tôi quan tâm trong việc mở rộng chức năng của chương trình của tôi để đọc từ các bảng tính công khai của Google. Tức là, được cung cấp URL của bảng tính công khai của Google (ví dụ: "https://spreadsheets.google.com/ccc?key=BUNCH_OF_LETTERS_HERE&hl=en"), tôi muốn nhận đối tượng SpreadsheetEntry tương ứng với tài liệu đó.

Phương pháp tôi đã sử dụng cho đến nay rõ ràng dường như không mở rộng để cho phép điều này, vì vậy tôi đã tự hỏi liệu có ai biết cách thích hợp để truy cập tài liệu Google công khai thông qua API của họ không?

Trả lời

4

Bạn chỉ cần truy xuất trang công khai và sau đó phân tích nguồn HTML cho các hàng.

Tiêu đề yêu cầu:

GET https://docs.google.com/spreadsheet/ccc?key=0Au1XehjMeFfYdEE2d0RDSk1FMEMtRjM0MmllUWdoTkE HTTP/1.1 
Host: docs.google.com 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko)  Chrome/15.0.874.120 Safari/535.2 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4 
Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.3 
Cookie: PREF=ID=68126eb9eb12adef:FF=0:TM=1331371284:LM=1331371284:S=Bkm9mYX8pYy9a4h9 

lưới Spreadsheet - nhãn Column:

<table class="waffle" cellspacing="0" cellpadding="0"> 

<thead><tr> 
<th class="row-header freezebar-top-left"></th> 
<th style="width:120px" class="column-headers-background">A</th> 
<th style="width:120px" class="column-headers-background">B</th> 
<th style="width:120px" class="column-headers-background">C</th> 
</tr></thead> 

<tbody> 

hàng đầu tiên khi người dùng định nghĩa tên cột:

<tr style='height:16px;'> 
<th style="height: 16px;" class="row-headers-background"><div class="row-header-wrapper" style="height: 16px;">1</div></th> 

<td class="g-0-GjugEgs0" dir="auto-ltr">username</td> 
<td class="g-0-GjugEgs0" dir="auto-ltr">create</td> 
<td class="g-0-GjugEgs0" dir="auto-ltr">expire</td> 
</tr> 

Phần còn lại của các hàng như dữ liệu người dùng: Số hàng:

<tr style='height:16px;'> 
<th style="height: 16px;" class="row-headers-background"><div class="row-header-wrapper" style="height: 16px;">2</div></th> 

ô dữ liệu Row:

<td class="g-0-GjugEgs2">3600001</td> 
<td class="g-0-GjugEgs2">2012</td> 
<td class="g-0-GjugEgs2">2013</td> 
</tr> 

Bạn có thể sử dụng Html Agility Pack hoặc phân tích cú pháp của riêng bạn.

tùy chọn khác là tải xuống bảng tính công cộng như tập tin trong CSV hoặc định dạng văn bản

File download yêu cầu tiêu đề:

GET https://docs.google.com/spreadsheet/fm?id=tA6wDCJME0C-F342ieQghNA.PREF_08255578241116458508.3736592253424693644&fmcmd=23&gid=0 HTTP/1.1 
Host: docs.google.com 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Referer: https://docs.google.com/spreadsheet/ccc?key=0Au1XehjMeFfYdEE2d0RDSk1FMEMtRjM0MmllUWdoTkE 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4 
Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.3 
Cookie: PREF=ID=68126eb9eb12adef:FF=0:TM=1331371284:LM=1331371284:S=Bkm9mYX8pYy9a4h9; lbcs=0 

Thông báo các id tham số. Bạn phải trích xuất nó từ nguồn html như sau:

... 
var mergedConfig = {"formToken":"Kg2uOS1UniIe0yFks5zcDZDsGQ=","formStatus":false,"id":"tA6wDCJME0C-F342ieQghNA.PREF_08255578241116458508.3736592253424693644", 
... 

Tôi đã sử dụng Fiddler để nắm bắt thông tin liên lạc bao gồm thông báo được mã hóa SSL.

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