2010-08-09 3 views
5

Я написал программу C# с использованием API-интерфейсов Google Docs .NET для чтения рабочего листа Google в DataTable с учетом имени пользователя, пароля, имени электронной таблицы и имени рабочего листа. Это все работает отлично, но модель программирования, кажется, вращается вокруг предоставления сервиса электронных таблиц набор учетных данных, а затем урезая полученный корм, чтобы получить конкретную электронную таблицу/лист, т.е.Как получить доступ к общедоступным электронным таблицам с помощью API-интерфейсов Google Docs C#?

Теперь я заинтересован в расширении функциональности моей программы для чтения из общедоступных электронных таблиц Google. То есть, учитывая URL-адрес общедоступной электронной таблицы Google (например, «https://spreadsheets.google.com/ccc?key=BUNCH_OF_LETTERS_HERE&hl=en»), я хочу получить объект SpreadsheetEntry, соответствующий этому документу.

Метод, который я использовал до сих пор, очевидно, кажется, не распространяется, чтобы позволить это, поэтому мне было интересно, знает ли кто-нибудь, как правильно открыть общедоступный документ Google через свой API?

ответ

4

Вы можете просто получить общедоступную страницу, а затем проанализировать источник HTML для строк.

В заголовках запросов:

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 

таблица сетка - Колонка этикетка:

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

первая строка, как определен пользовательские имена столбцов:

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

Остальная частью строк в качестве пользовательских данных: Номер строки:

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

ячейки данных Row:

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

Вы можете использовать Html Agility Pack или собственный синтаксический анализатор.

Другой вариант загрузки общественной таблицы в виде файла в формате CSV или текстовом формате

Файл заголовков запроса загрузки:

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 

Обратите внимание на идентификатор параметра. Вы должны извлечь из источника HTML, как показано ниже:

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

Я использовал Fiddler для захвата связи, включая SSL зашифрованные сообщения.

 Смежные вопросы

  • Нет связанных вопросов^_^