2011-09-26 7 views
7

저는 Python으로 작업 중이며 공개 Google 스프레드 시트 (this one)에서 데이터를 가져 오려고하지만 the developer documentation으로 조금 고생하고 있습니다.gdata 라이브러리를 사용하여 공개 Google 스프레드 시트에서 데이터를 검색 하시겠습니까?

가능하면 공개 스프레드 시트이므로 클라이언트 인증을 피하고 싶습니다.

다음은 GDATA 라이브러리, 내 현재 코드입니다 :

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

이 BadStatusLine로 3 행에 실패합니다.

스프레드 시트의 데이터를 어떻게 읽을 수 있습니까?

+0

이것이 당신에게 도움이 될지 확실하지 않은 Richard는 GetListFeed (key, sheet_key, visibility = 'public', projection = 'values')를 사용하여 사전으로 구성된 각 행의 데이터를 찾을 수 있습니다. Excel로 스프레드 시트를 내보내고 xlrd (http://pypi.python.org/pypi/xlrd)를 사용하여 데이터를 읽을 수 있습니다. –

+2

감사합니다. 나는 gdata를 사용하고 싶습니다. 그러나 문서는 악마적이고 아무도 그것을 사용하는 법을 알지 못합니다 ... – Richard

답변

17

나는 문서가 실제로 열악하다는 인상을 되 새기고 싶다. 그러나, 지금까지 내가 알아 낸 것입니다.

은 공공의 게시

스프레드 시트 그냥되는 반대로 "웹에 게시"하는 것이 매우 중요하다 "웹에 공개." 첫 번째 작업은 "파일 -> 웹에 게시 ..."메뉴 항목으로 이동하여 수행됩니다. 두 번째 방법은 스프레드 시트의 왼쪽 상단 모서리에있는 '공유'버튼을 클릭하면됩니다.

키가 '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc'인 스프레드 시트는 '웹에 공개'만 표시됩니다. 나는 예제 코드를 가지고 놀기 위해 그것의 복사본을 만들었다. 내 사본에는 나중에 키가 있습니다. '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE'. 나중에 샘플 코드에서 볼 수 있습니다.

이 "Public on the Web"대 "Published on The Web"은 말도 안되는 점입니다. 이것은 주요 API 문서의 "Visibilities and Projections" 섹션에있는 빨간색 상자에 실제로 문서화되어 있습니다. 그러나 그 문서를 읽는 것은 정말로 어렵습니다.

가시성 및 계획은 같은 문서가 말한대로

이외의 예측이있다 "전체." 그리고 실제로 (문서화되지 않은) "풀 (full)"은 인증되지 않은 호출을 할 때 설정하는 것이 중요하기 때문에 "공개"의 가시성을 제대로 표현하지 못합니다.

pydocs에서 SpreadsheetsService 개체의 많은 메서드가 "가시성"및 "프로젝션"매개 변수를 사용할 수 있습니다. 나는 단지 "공개"와 "개인"의 가시성을 안다. 다른 사람들을 배울 경우 그들에 대해서도 알고 싶습니다. 인증되지 않은 전화를 걸 때 "공개"가 사용해야하는 것으로 보입니다.

투영법은 훨씬 더 복잡합니다. "전체", "기본"및 "가치"예측에 대해 알고 있습니다. 나는 운이 좋았고 소스 코드를 훌륭한 Tabletop 자바 스크립트 라이브러리로 읽음으로써 "값"투영법을 발견했다. 그리고 그것은 물건을 작동시키는 데 필요한 비밀이 무엇인지를 추측합니다.

작업 코드 여기

는 스프레드 시트의 내 사본에서 워크 시트를 조회하는 데 사용할 수있는 몇 가지 코드입니다.실행중인 파이썬 인터프리터에서 dir() 방법을 사용하는 것이 몹시 문서화 된 파이썬 API를 사용하여 작업 할 때

#!/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 

** 팁 ** 내가 파이썬에서 얻을 수있는 정보의 종류에 대한 자세한 내용을 보려면 정말 도움이 사물. 이 경우 XML 및 URL 기반 API 위의 추상화가 거의 없기 때문에 너무 도움이되지 않습니다.

그런데 스프레드 시트에서 실제 데이터를 다루기를 원할 것입니다. 그래서 한 가지 더 많은 포인터를 사용하겠습니다. 입력으로 [0] .custom

관련 문제