복붙노트

[PYTHON] Google 스프레드 시트를 Python으로 액세스 (읽기, 쓰기)하려면 어떻게합니까?

PYTHON

Google 스프레드 시트를 Python으로 액세스 (읽기, 쓰기)하려면 어떻게합니까?

파이썬을 사용하여 Google doc / 스프레드 시트를 읽고 쓰는 예제를 가르쳐 주시겠습니까?

Google 문서 API를 https://developers.google.com/google-apps/spreadsheets/ 여기에서 확인했지만 올바른 링크를 클릭했는지 확실하지 않습니다. 또한 한 가지 예가 큰 도움이 될 것입니다.

내가 뭘 하려는지 SQL 쿼리와 같은 다른 열을 기반으로 쿼리 스프레드 시트입니다 다음 몇 가지 다운 스트림 데이터를 구문 분석하고 다른 스프레드 시트 또는 워드 프로세서에 워드 프로세서에 넣어.

최고, 지금

해결법

  1. ==============================

    1.(Jun-Dec 2016) 여기에 대한 대부분의 답변은 다음과 같이 오래되었습니다. 1) GData API는 이전 세대의 Google API이므로 @Josh Brown이 이전 GData 문서 API 문서를 찾기가 어려웠습니다. 모든 GData API가 사용 중지 된 것은 아니지만 모든 최신 Google API는 Google 데이터 프로토콜을 사용하지 않습니다. 2) Google은 GData가 아닌 새로운 Google 스프레드 시트 API를 출시했습니다. 새로운 API를 사용하려면 파이썬 용 Google API 클라이언트 라이브러리를 가져와야합니다 (pip install -U google-api-python-client [또는 Python 3 용 pip3]). 최신 스프레드 시트 API v4 + 이전 API 릴리스보다 훨씬 강력하고 유연합니다.

    (Jun-Dec 2016) 여기에 대한 대부분의 답변은 다음과 같이 오래되었습니다. 1) GData API는 이전 세대의 Google API이므로 @Josh Brown이 이전 GData 문서 API 문서를 찾기가 어려웠습니다. 모든 GData API가 사용 중지 된 것은 아니지만 모든 최신 Google API는 Google 데이터 프로토콜을 사용하지 않습니다. 2) Google은 GData가 아닌 새로운 Google 스프레드 시트 API를 출시했습니다. 새로운 API를 사용하려면 파이썬 용 Google API 클라이언트 라이브러리를 가져와야합니다 (pip install -U google-api-python-client [또는 Python 3 용 pip3]). 최신 스프레드 시트 API v4 + 이전 API 릴리스보다 훨씬 강력하고 유연합니다.

    공식 문서에서 구할 수있는 코드 샘플이 있습니다. 그러나 다음과 같이 약간 더 길고 더 많은 "실제"API를 사용할 수 있습니다 (동영상과 블로그 게시물).

    최신 Sheets API는 이전 버전에서는 사용할 수 없었던 기능을 제공합니다. 즉 개발자가 고정 된 행 만들기, 셀 서식 지정, 행 / 열 크기 조정, 피벗 테이블 추가, 차트 만들기 등과 같이 시트에 프로그래밍 방식으로 시트에 액세스 할 수있게합니다. .). 그러나 검색을 수행하고 선택된 행을 가져올 수있는 데이터베이스와 같은 것은 아닙니다. 기본적으로이 작업을 수행하는 API 위에 쿼리 레이어를 작성해야합니다. 한 가지 대안은 SQL과 유사한 쿼리를 지원하는 Google Charts Visualization API 쿼리 언어를 사용하는 것입니다. 시트 자체에서 쿼리 할 수도 있습니다. 이 기능은 v4 API 이전에 존재했기 때문에 보안 모델이 2016 년 8 월에 업데이트되었음을 ​​유의하십시오. 자세히 알아 보려면 Google 개발자 전문가가 작성한 G + 다시 공유를 확인하십시오.

    또한 스프레드 시트 API는 위에서 설명한 스프레드 시트 작업 및 기능에 프로그래밍 방식으로 액세스하지만 가져 오기 / 내보내기, 복사, 이동, 이름 바꾸기 등과 같은 파일 수준 액세스를 수행하기 위해 Google 드라이브 API를 대신 사용합니다. 드라이브 API 사용의 예 :

    (*) - TL : DR : 일반 텍스트 파일을 드라이브에 업로드하고 Google 문서 형식으로 가져 오거나 변환 한 다음 해당 문서를 PDF로 내 보냅니다. 위의 게시물은 Drive API v2를 사용합니다. 이 후속 게시물은 드라이브 API v3으로 마이그레이션하는 방법에 대해 설명하며 여기에는 '가난한 사람의 변환기'게시물을 모두 결합하는 개발자 동영상이 있습니다.

    일반적으로 Python에서 Google API를 사용하는 방법에 대해 자세히 알아 보려면 필자가 제작중인 다양한 Google 개발자 동영상 (시리즈 1 및 시리즈 2)을 확인하십시오.

    추신. Google 문서 도구에 관한 한 현재로서는 사용할 수있는 REST API가 없으므로 프로그래밍 방식으로 문서에 액세스하는 유일한 방법은 Google Apps Script (Node.js와 마찬가지로 브라우저 외부의 JavaScript이지만 노드 서버에서 실행되는이 앱은 Google의 클라우드에서 실행되며 소개 동영상도 확인하십시오.) Apps Script를 사용하면 Google Apps (또는 스프레드 시트 / 설문지)와 관련된 문서 앱 또는 부가 기능을 만들 수 있습니다.

    2018 년 7 월 업데이트 : 위의 "ps." 더 이상 사실이 아닙니다. G Suite 개발자 팀은 Google Cloud NEXT '18에서 새로운 Google 문서 도구 REST API를 사전에 발표했습니다. 새 API에 대한 초기 액세스 프로그램에 관심이있는 개발자는 https://developers.google.com/docs에 등록해야합니다.

  2. ==============================

    2.GitHub - gspread를 살펴보십시오.

    GitHub - gspread를 살펴보십시오.

    나는 사용하기가 매우 쉽다는 것을 발견했다.

    first_col = worksheet.col_values(1)
    

    그리고 전체 행을

    second_row = worksheet.row_values(2)
    

    당신은 어느 정도 기본 선택을 만들 수 있습니다 ... ... = 쉽게 ... = ....

  3. ==============================

    3.이 스레드는 오래되었다는 것을 알고 있지만 Google 문서 도구 API에 관한 문서는 여기에 있습니다. 그것은 찾기가 무척 힘들었지 만 유용했기 때문에 아마도 도움이 될 것입니다. http://pythonhosted.org/gdata/docs/api.html.

    이 스레드는 오래되었다는 것을 알고 있지만 Google 문서 도구 API에 관한 문서는 여기에 있습니다. 그것은 찾기가 무척 힘들었지 만 유용했기 때문에 아마도 도움이 될 것입니다. http://pythonhosted.org/gdata/docs/api.html.

    최근 gspread를 사용하여 직원 시간 데이터를 그래프로 나타 냈습니다. 얼마나 도움이 될지 모르지만 코드에 대한 링크는 다음과 같습니다. https://github.com/lightcastle/employee-timecards

    Gspread는 나를 위해 일을 꽤 쉽게 만들었습니다. 또한 논리를 추가하여 다양한 조건을 확인하여 월간 및 연초 결과를 만들 수있었습니다. 하지만 방금 댕 스프레드 시트를 가져 와서 거기에서 파싱 했으므로 100 % 확신하지 못했습니다. 행운을 빕니다.

  4. ==============================

    4.api v4 - pygsheets 용 gspread 포트를 살펴보십시오. 그것은 Google 클라이언트보다는 오히려 사용하기 아주 쉬워야한다.

    api v4 - pygsheets 용 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("myFriend@gmail.com")
    

    여기의 문서를 참조하십시오.

    여기 작성자.

  5. ==============================

    5.최신 Google API 문서는 스프레드 시트에 파이썬으로 작성하는 방법을 설명하지만 탐색하기가 다소 어렵습니다. 다음은 추가하는 방법의 예에 대한 링크입니다.

    최신 Google API 문서는 스프레드 시트에 파이썬으로 작성하는 방법을 설명하지만 탐색하기가 다소 어렵습니다. 다음은 추가하는 방법의 예에 대한 링크입니다.

    다음 코드는 google 스프레드 시트에 추가 할 때 처음 시도한 성공적인 시도입니다.

    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()
    
  6. ==============================

    6.해당 API 문서의 셀 기반 피드 섹션을 살펴 보았습니다. 그런 다음 commands.getstatusoutput 또는 subprocess를 사용하여 Python 스크립트 내에서 PUT / GET 요청을 사용할 수 있습니다.

    해당 API 문서의 셀 기반 피드 섹션을 살펴 보았습니다. 그런 다음 commands.getstatusoutput 또는 subprocess를 사용하여 Python 스크립트 내에서 PUT / GET 요청을 사용할 수 있습니다.

  7. from https://stackoverflow.com/questions/9690138/how-do-i-access-read-write-google-sheets-spreadsheets-with-python by cc-by-sa and MIT license