61

मुझे आश्चर्य है कि क्या आप मुझे पाइथन का उपयोग करके Google डॉक/स्प्रेडशीट से पढ़ने/लिखने के उदाहरण के बारे में बता सकते हैं।मैं पाइथन के साथ Google शीट्स स्प्रैडशीट्स तक कैसे पहुंच सकता हूं (पढ़ना, लिखना)?

मैंने Google डॉक्स एपीआई पर https://developers.google.com/google-apps/spreadsheets/ पर ध्यान दिया लेकिन यह सुनिश्चित नहीं है कि मैंने सही लिंक मारा है या नहीं। एक उदाहरण भी बहुत मददगार होगा।

जो मैं करने की कोशिश कर रहा हूं वह SQL क्वेरी की तरह अलग-अलग स्तंभों के आधार पर प्रश्न स्प्रेडशीट है और फिर डेटा के साथ कुछ डाउनस्ट्रीम पार्सिंग करें और उसे Google डॉक्स पर किसी अन्य स्प्रेडशीट या दस्तावेज़ में डालें।

बेस्ट, -Abhi

+3

http://code.google.com/p/gdata-python-client/ –

उत्तर

-2

मैं आपको लगता है कि एपीआई डॉक पेज में कोशिका आधारित फ़ीड अनुभाग को देख रहे है। फिर आप commands.getstatusoutput या subprocess का उपयोग करके अपने पायथन स्क्रिप्ट के भीतर PUT/GET अनुरोधों का उपयोग कर सकते हैं।

51

GitHub - gspread पर एक नज़र डालें।

मैंने पाया यह बहुत उपयोग करने में आसान होने के लिए और जब से तुम से

second_row = worksheet.row_values(2) 

द्वारा

first_col = worksheet.col_values(1) 

और एक पूरी पंक्ति एक पूरी स्तंभ प्राप्त कर सकते हैं आप कम या ज्यादा कुछ बुनियादी चयन का निर्माण कर सकते ... जहां ... = ... आसानी से।

+4

नोट: gspread में पंक्तियों, कक्षों या स्तंभों को हटाने के लिए कार्यक्षमता प्रतीत नहीं होती है - यह केवल स्प्रेडशीट या साफ़ कक्षों का आकार बदल सकता है। यह मेरे उद्देश्यों के लिए बेकार बना दिया। – Moshe

+0

मुझे विश्वास नहीं है कि यह gspread है कि समस्या है ... यह एपीआई है। पुरानी शीट्स एपीआई रिलीज (v1-v3) ने उस कार्यक्षमता को प्रदान नहीं किया। [नया वी 4 एपीआई हटा सकता है] (http://developers.google.com/sheets/samples/rowcolumn)। अधिक जानकारी के लिए [मेरा जवाब] (http://stackoverflow.com/a/37868852/5049813) देखें। – wescpy

+0

gspread api v4 पोर्ट [pygsheets] (https://github.com/nithinmurali/pygsheets) को आजमाएं - लेखक – nithin

28

मुझे पता है कि यह धागा पुराना है, लेकिन यहां Google डॉक्स एपीआई पर कुछ सभ्य दस्तावेज हैं। यह हास्यास्पद रूप से खोजने के लिए मुश्किल था, लेकिन उपयोगी, तो शायद यह आपको कुछ मदद करेगा। http://pythonhosted.org/gdata/docs/api.html

मैंने कर्मचारी समय डेटा को ग्राफ करने के लिए हाल ही में एक परियोजना के लिए जीस्प्रेड का उपयोग किया था। मुझे नहीं पता कि यह आपकी मदद कैसे कर सकता है, लेकिन यहां कोड का एक लिंक है: https://github.com/lightcastle/employee-timecards

जीस्प्रेड ने मेरे लिए चीजों को बहुत आसान बना दिया। मैं महीने-दर-तारीख और साल-दर-तारीख परिणाम बनाने के लिए विभिन्न स्थितियों की जांच के लिए तर्क जोड़ने में भी सक्षम था। लेकिन मैंने अभी पूरे डांग स्प्रेडशीट को आयात किया है और इसे वहां से पार्स किया है, इसलिए मुझे 100% यकीन नहीं है कि यह वही है जो आप खोज रहे हैं। शुभकामनाएँ।

+0

दूसरा लिंक अब पहले – Kariamoss

+0

पर रीडायरेक्ट करें यह उत्तर अब पुराना है। [Wescpy का जवाब] देखें (http://stackoverflow.com/a/37868852/5049813)। –

79

(जून-दिसंबर 2016) अधिकांश यहाँ जवाब अब कर रहे हैं बाहर के तारीख के रूप में: 1) GData APIs गूगल एपीआई की पिछली पीढ़ी के हैं, और यही कारण है कि यह मुश्किल है कि पुराने GData डॉक्स को खोजने के लिए @Josh Brown थी एपीआई दस्तावेज। हालांकि सभी जीडीएटी एपीआई को बहिष्कृत नहीं किया गया है, all newer Google APIsthe Google Data protocol का उपयोग करें; और 2) Google released a new Google Sheets API (जीडीएटी नहीं)। नई एपीआई का उपयोग करने के लिए, आपको the Google APIs Client Library for Python प्राप्त करना होगा (यह pip install -U google-api-python-client [या pip3 पाइथन 3] के लिए आसान है) और नवीनतम Sheets API v4+ का उपयोग करें, जो पुराने एपीआई रिलीज़ से अधिक शक्तिशाली & लचीला है।

आधिकारिक दस्तावेज़ों से किकस्टार्ट करने में सहायता के लिए यहां एक code sample है।हालांकि, यहाँ हैं थोड़ा लंबा है, और अधिक "वास्तविक दुनिया" एपीआई आप (वीडियो प्लस ब्लॉग पोस्ट) से सीख सकते हैं उपयोग करने के उदाहरण:

नवीनतम शीट्स एपीआई पुराने विज्ञप्ति में उपलब्ध नहीं है, अर्थात् डेवलपर्स प्रोग्रामेटिक एक्सेस देने विशेषताएं प्रदान करता है एक शीट के लिए जैसे कि आप उपयोगकर्ता इंटरफ़ेस का उपयोग कर रहे थे (जमे हुए पंक्तियां बनाएं, सेल स्वरूपण करें, पंक्तियों/स्तंभों का आकार बदलना, पिवोट टेबल जोड़ना, चार्ट बनाना आदि), लेकिन ऐसा नहीं है कि यह कुछ डेटाबेस था जिसे आप खोज कर सकते हैं और चयनित पंक्तियां प्राप्त करें। आपको मूल रूप से एपीआई के शीर्ष पर एक क्वेरीिंग परत बनाना होगा जो ऐसा करता है। एक विकल्प the Google Charts Visualization API query language का उपयोग करना है, जो SQL-like querying का समर्थन करता है। आप query from within the Sheet भी स्वयं कर सकते हैं। ध्यान रखें कि यह कार्यक्षमता v4 एपीआई से पहले मौजूद थी, और security model was updated in Aug 2016। अधिक जानने के लिए, Google Developer Expert से my G+ reshare to a full write-up देखें।

भी ध्यान रखें कि शीट्स एपीआई, आदि मुख्य रूप से प्रोग्राम के रूप में ऊपर वर्णित के रूप में स्प्रेडशीट संचालन & कार्यक्षमता तक पहुँचने के लिए है, लेकिन फ़ाइल प्रदर्शन करने के लिए स्तर पहुँच आयात/निर्यात, कॉपी, चाल, नाम बदलने जैसे, उपयोग इसके बजाय Google Drive API

  • Listing your files in Google Drive और कोड गहरा गोता post
  • Google Drive: Uploading & Downloading Files प्लस कोड गहरा गोता post (*)
  • सीएसवी ब्लॉग के रूप में एक Google शीट निर्यात "गरीब आदमी का पीडीएफ कनवर्टर करने के लिए सादा पाठ": ड्राइव एपीआई का उपयोग कर के उदाहरण post केवल

(*) - टीएल; डीआर: Google डॉक्स प्रारूप में ड्राइव, आयात/रूपांतरित करने के लिए सादा पाठ फ़ाइल अपलोड करें, फिर उस दस्तावेज़ को पीडीएफ के रूप में निर्यात करें। उपरोक्त पोस्ट ड्राइव एपीआई v2 का उपयोग करता है; this follow-up post इसे ड्राइव एपीआई v3 पर माइग्रेट करने का वर्णन करता है, और यहां "developer video दोनों" गरीब व्यक्ति के कनवर्टर "पदों को संयोजित करते हैं।

कैसे सामान्य रूप में अजगर के साथ Google API का उपयोग करने के लिए, my blog साथ ही गूगल डेवलपर वीडियो (series 1 और series 2) मैं उत्पादन कर रहा हूँ की एक किस्म की जाँच के बारे में अधिक जानने के लिए।

ps। जहां तक ​​Google डॉक्स चला जाता है, इस समय एक आरईएसटी एपीआई उपलब्ध नहीं है, इसलिए प्रोग्रामिंग रूप से डॉक तक पहुंचने का एकमात्र तरीका Google Apps Script (जैसे Node.js ब्राउज़र के बाहर जावास्क्रिप्ट है, लेकिन इसके बजाय एक नोड सर्वर पर चल रहा है, ये ऐप्स Google के क्लाउड में चलते हैं; मेरे intro video भी देखें।) ऐप्स स्क्रिप्ट के साथ, आप Docs app या add-on for Docs (और अन्य चीजें जैसे शीट्स & फॉर्म) बना सकते हैं।

+5

धन्यवाद wescpy, यह टक्कर लगी है। –

6

नवीनतम Google एपीआई दस्तावेज़ दस्तावेज़ को पाइथन के साथ स्प्रेडशीट पर कैसे लिखना है, लेकिन इसे नेविगेट करना थोड़ा मुश्किल है। यहां एक लिंक to an example of how to append है।

निम्न कोड Google स्प्रेडशीट में शामिल होने का मेरा पहला सफल प्रयास है।pygsheets -

import httplib2 
import os 

from apiclient import discovery 
import oauth2client 
from oauth2client import client 
from oauth2client import tools 

try: 
    import argparse 
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() 
except ImportError: 
    flags = None 

# If modifying these scopes, delete your previously saved credentials 
# at ~/.credentials/sheets.googleapis.com-python-quickstart.json 
SCOPES = 'https://www.googleapis.com/auth/spreadsheets' 
CLIENT_SECRET_FILE = 'client_secret.json' 
APPLICATION_NAME = 'Google Sheets API Python Quickstart' 


def get_credentials(): 
    """Gets valid user credentials from storage. 

    If nothing has been stored, or if the stored credentials are invalid, 
    the OAuth2 flow is completed to obtain the new credentials. 

    Returns: 
     Credentials, the obtained credential. 
    """ 
    home_dir = os.path.expanduser('~') 
    credential_dir = os.path.join(home_dir, '.credentials') 
    if not os.path.exists(credential_dir): 
     os.makedirs(credential_dir) 
    credential_path = os.path.join(credential_dir, 
            'mail_to_g_app.json') 

    store = oauth2client.file.Storage(credential_path) 
    credentials = store.get() 
    if not credentials or credentials.invalid: 
     flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) 
     flow.user_agent = APPLICATION_NAME 
     if flags: 
      credentials = tools.run_flow(flow, store, flags) 
     else: # Needed only for compatibility with Python 2.6 
      credentials = tools.run(flow, store) 
     print('Storing credentials to ' + credential_path) 
    return credentials 

def add_todo(): 
    credentials = get_credentials() 
    http = credentials.authorize(httplib2.Http()) 
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?' 
        'version=v4') 
    service = discovery.build('sheets', 'v4', http=http, 
           discoveryServiceUrl=discoveryUrl) 

    spreadsheetId = 'PUT YOUR SPREADSHEET ID HERE' 
    rangeName = 'A1:A' 

    # https://developers.google.com/sheets/guides/values#appending_values 
    values = {'values':[['Hello Saturn',],]} 
    result = service.spreadsheets().values().append(
     spreadsheetId=spreadsheetId, range=rangeName, 
     valueInputOption='RAW', 
     body=values).execute() 

if __name__ == '__main__': 
    add_todo() 
+0

प्रश्न का एकमात्र विशिष्ट उत्तर। – e4c5

5

एपीआई v4 के लिए gspread बंदरगाह पर एक नजर डालें। Google क्लाइंट की बजाय उपयोग करना बहुत आसान होना चाहिए।

नमूना उदाहरण

import pygsheets 

gc = pygsheets.authorize() 

# Open spreadsheet and then workseet 
sh = gc.open('my new ssheet') 
wks = sh.sheet1 

# Update a cell with value (just to let him know values is updated ;)) 
wks.update_cell('A1', "Hey yank this numpy array") 

# update the sheet with array 
wks.update_cells('A2', my_nparray.to_list()) 

# share the sheet with your friend 
sh.share("[email protected]") 

डॉक्स here देखें।

यहां लेखक।

+0

'pgsgsheets' 'gspread' का एक बंदरगाह है या एक पूर्ण पुनः लिखना है? – Xocoatzin

+0

यह एक पूर्ण पुनर्लेखन है हालांकि एपीआई लगभग – nithin

+0

ग्लेड मैंने स्क्रॉल किया है। यह अब तक मेरे लिए सबसे सरल समाधान है। Google शीट्स के उपयोग को अधिकृत करने के लिए क्रेडेंशियल बनाने के बारे में कुछ जानकारी उपयोगी होगी, इस तरह की कुछ https://www.themarketingtechnologist.co/google-oauth-2-enable-your-application-to-access-data-from- ए-google-user/ – Katu

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

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