2011-09-26 9 views
7

मैं पाइथन में काम कर रहा हूं और सार्वजनिक Google स्प्रेडशीट (this one) से डेटा पुनर्प्राप्त करने का प्रयास कर रहा हूं लेकिन the developer documentation के साथ थोड़ा सा संघर्ष कर रहा हूं।gdata लाइब्रेरी का उपयोग कर सार्वजनिक Google स्प्रेडशीट से डेटा पुनर्प्राप्त करें?

यदि संभव हो तो मैं क्लाइंट प्रमाणीकरण से बचना चाहता हूं, क्योंकि यह एक सार्वजनिक स्प्रेडशीट है।

यहाँ मेरे वर्तमान कोड है, GData पुस्तकालय के साथ:

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

यह BadStatusLine के साथ लाइन 3 पर विफल रहता है।

मैं स्प्रेडशीट से डेटा में कैसे पढ़ सकता हूं?

+0

रिचर्ड सुनिश्चित नहीं है कि इससे आपकी मदद मिलेगी, लेकिन आप एक्सेल के रूप में स्प्रेडशीट निर्यात कर सकते हैं और डेटा पढ़ने के लिए xlrd (http://pypi.python.org/pypi/xlrd) का उपयोग कर सकते हैं। –

+2

धन्यवाद! मैं gdata का उपयोग करना चाहता हूं, लेकिन दस्तावेज़ीकरण शैक्षिक है, कोई भी यह नहीं जानता कि इसका उपयोग कैसे करें ... – Richard

उत्तर

17

मैं आपकी भावना को प्रतिबिंबित करना शुरू करना चाहता हूं कि दस्तावेज़ीकरण वास्तव में खराब है। लेकिन, यहां तक ​​कि मैं अब तक पता लगाने में सक्षम हूं।

लोक की प्रकाशित

यह बहुत महत्वपूर्ण है कि आपकी स्प्रेडशीट के रूप में सिर्फ होने का विरोध "वेब पर प्रकाशित" किया है "वेब पर सार्वजनिक।" पहला "फ़ाइल -> वेब पर प्रकाशित करें ..." मेनू आइटम पर जाकर हासिल किया जाता है। दूसरा स्प्रेडशीट के ऊपरी बाएं कोने में "साझा करें" बटन पर क्लिक करके हासिल किया जाता है।

मैंने चेक किया, और आपकी स्प्रेडशीट कुंजी = '0Atncguwd4yTedEx3Nzd2aUZyNmVmZGRHY3Nmb3I2ZXc' केवल "वेब पर सार्वजनिक" है। मैंने अपने उदाहरण कोड के साथ खेलने के लिए इसकी प्रतिलिपि बनाई है। मेरी प्रति में एक कुंजी = '0Aip8Kl9b7wdidFBzRGpEZkhoUlVPaEg2X0F2YWtwYkE' है जिसे आप बाद में मेरे नमूना कोड में देखेंगे।

यह "वेब पर प्रकाशित" बनाम "वेब पर प्रकाशित" बकवास स्पष्ट रूप से आम भ्रम का एक बिंदु है। यह वास्तव में मुख्य एपीआई दस्तावेज के "Visibilities and Projections" खंडों में एक लाल बॉक्स में प्रलेखित है। हालांकि, उस दस्तावेज़ को पढ़ने में वाकई मुश्किल है।

दृश्यता और अनुमान

कि एक ही दस्तावेज़ कहते हैं, वहाँ के अलावा अन्य अनुमानों हैं "पूर्ण।" और वास्तव में (अनियंत्रित), "पूर्ण" "सार्वजनिक" की दृश्यता के साथ अच्छी तरह से खेलना प्रतीत नहीं होता है, जो अनधिकृत कॉल करते समय सेट करना भी महत्वपूर्ण है।

आप pydocs से गलेन की तरह हो सकते हैं कि स्प्रेडशीट्स सेवा ऑब्जेक्ट पर कई विधियां "दृश्यता" और "प्रक्षेपण" पैरामीटर ले सकती हैं। मैं केवल "सार्वजनिक" और "निजी" दृश्यताओं के बारे में जानता हूं। यदि आप किसी अन्य के बारे में सीखते हैं, तो मैं उनके बारे में भी जानना चाहता हूं। ऐसा लगता है कि "सार्वजनिक" वह है जिसे आपको अनधिकृत कॉल करते समय उपयोग करना चाहिए।

अनुमानों के लिए, यह और भी जटिल है। मुझे "पूर्ण", "मूल", और "मूल्य" अनुमानों के बारे में पता है। मुझे केवल भाग्यशाली मिला और उत्कृष्ट Tabletop जावास्क्रिप्ट लाइब्रेरी में स्रोत कोड पढ़कर "मूल्य" प्रक्षेपण मिला। और, अनुमान लगाओ, चीजों को काम करने के लिए यह गुप्त गायब घटक है।

कार्य संहिता

यहाँ कुछ कोड अगर आप अपनी स्प्रैडशीट के अपने प्रतिलिपि से कार्यपत्रकों क्वेरी करने के लिए उपयोग कर सकते हैं।

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

** टिप्स ** मैं जानकारी के प्रकार मैं अजगर से प्राप्त कर सकते हैं के बारे में अधिक जानने के लिए जब बहुत से प्रलेखित अजगर API के साथ कार्य चल रहे एक अजगर दुभाषिया में dir() विधि का उपयोग करने यह वास्तव में मददगार वस्तुओं। इस मामले में, यह बहुत ज्यादा मदद नहीं करता है क्योंकि एक्सएमएल और यूआरएल आधारित एपीआई के ऊपर अमूर्तता बहुत खराब है।

वैसे, मुझे यकीन है कि आप स्प्रेडशीट में वास्तविक डेटा से निपटना शुरू करना चाहते हैं, इसलिए मैं आगे बढ़ूंगा और एक और पॉइंटर में टॉस करूंगा। एक शब्दकोश के रूप में व्यवस्थित प्रत्येक पंक्ति के लिए डेटा GetListFeed (कुंजी, शीट_की, दृश्यता = 'सार्वजनिक', प्रक्षेपण = 'मान') का उपयोग करके पाया जा सकता है। प्रविष्टि [0]। कस्टम

संबंधित मुद्दे