Skip to content
컴퓨터잡담
2021.06.25 16:06

파이썬 gspread 사용법

조회 수 5203 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

출처 : https://docs.gspread.org/en/latest/advanced.html

 

다음 코드로 새 Python 파일을 만듭니다.

import gspread

gc = gspread.oauth()

sh = gc.open("Example spreadsheet")

print(sh.sheet1.get('A1'))

이 코드를 실행하면 인증을 요청하는 브라우저가 실행됩니다. 웹 페이지의 지침을 따르십시오. 완성되면, gspread 상점 옆에있는 config 디렉토리에서 자격 증명 권한 credentials.json을 . 브라우저에서 한 번만 인증하면됩니다. 다음 실행은 저장된 자격 증명을 재사용합니다.
 

gspread 사용의 예

앱을 아직 승인하지 않은 경우 먼저 인증을 읽어보세요 .

스프레드 시트 열기

Google 문서에 표시되는 제목으로 스프레드 시트를 열 수 있습니다.

sh = gc.open('My poor gym results')

구체적으로 알고 싶다면 키 (스프레드 시트의 URL에서 추출 할 수 있음)를 사용하십시오.

sht1 = gc.open_by_key('0BmgG6nO_6dprdS1MN3d3MkdPa142WFRrdnRRUWl1UFE')

또는 해당 키를 추출하는 것이 너무 게으르다면 전체 스프레드 시트의 URL을 붙여 넣으세요.

sht2 = gc.open_by_url('https://docs.google.com/spreadsheet/ccc?key=0Bm...FE&hl')

 

스프레드 시트 만들기

create()새 빈 스프레드 시트를 만드는 데 사용 합니다.

sh = gc.create('A new spreadsheet')

 

스프레드 시트 공유

이메일이 otto@example.com 인 경우 새로 생성 된 스프레드 시트를 자신과 공유 할 수 있습니다.

sh.share('otto@example.com', perm_type='user', role='writer')

share()허용되는 매개 변수의 전체 목록은 문서를 참조하세요 .

워크 시트 선택

인덱스로 워크 시트를 선택합니다. 워크 시트 색인은 0부터 시작합니다.

worksheet = sh.get_worksheet(0)

또는 제목으로 :

worksheet = sh.worksheet("January")

또는 가장 일반적인 경우 : Sheet1 :

worksheet = sh.sheet1

모든 워크 시트 목록을 가져 오려면 다음을 수행하십시오.

worksheet_list = sh.worksheets()

워크 시트 생성

worksheet = sh.add_worksheet(title="A worksheet", rows="100", cols="20")

워크 시트 삭제

sh.del_worksheet(worksheet)

셀 값 얻기

A1 표기법 사용 :

val = worksheet.acell('B1').value

또는 행 및 열 좌표 :

val = worksheet.cell(1, 2).value

 

    txt1 = str(entry_0.get()) # entry_0에 문자열 값을 txt1에 저장한다.
    cell = worksheet.find(txt1) # 워크시트에서 txt1 값으로 셀 정보를 cel1에 정한다.
    #print("찾은 셀위치 R%sC%s" % (cell.row, cell.col))
    cell_list = worksheet.findall(txt1) #워크시트에서 txt1로 검색한 모든 결과값을 cell_list에 저장한다.
    print(cell_list) #cell_list를 출력한다.
    value = cell.value #cel1값을 value에 저장한다.
    print(value) #value값을 저장한다.
    row_number = cell.row #cel1의 row 위치값을 row_number에 저장한다.
    print(row_number) #row_number를 출력한다.
    column_number = cell.col #cel1의 col 위치값을 colnum_number에 저장한다.
    print(column_number) #column_number를 출력한다.
    vv = worksheet.cell(cell.row, cell.col+3).value #워크시트의 cel1의 행, 열에 있는 결과값을 vv에 저장한다.
    print(vv) #vv값을 출력한다.
    

 

 

 

업데이트 / 삽입

업데이트

해당 키의 값을 업데이트 하고자 한다면?

worksheet.update('B1', '<Value>')

위와같이 첫번째 인자에는 행열의 위치를 지정하는데 나 같은 경우엔 소스코드에서 딕셔너리로 열에 대한 정보를 만들어 놓았다.

col = {
    'key': 'A',
    'value': 'B'
}

worksheet.update(col['value'] + str(t.row), '<Value>')

 

멀티라인? 다중배열구조로 한꺼번에 많은 데이터 업데이트 시키기

worksheet.update('B3:C4', [['값1','친구'],["널1",'주식']])   # 값과 친구는 B, C열의 3번행에 / 널1과 주식은 B, C 열의 4번행에 들어갑니다.

결과>>

1.png

 

 

삽입

worksheet.insert_row(['<Value>', '<Value>'])

insert_row 메서드를 사용하면 0번 행에 값을 추가한다. 0번 행은 구분 값으로 사용하려던터라 마지막 행에 넣는 방법을 찾고자 하였으나 구분값을 굳이 사용하지 않는다면 활용성이 높을 것으로 보인다.

여하튼 값을 찾을 때 값이 없으면 새로운 행을 삽입하는 코드는 아래처럼 작성할 수 있겠다.

find_row = None
try:
    find_row = worksheet.find("<Value>")
except:
    worksheet.insert_row(['<Value>', '<Value>'])

 

셀 수식을 얻으려면 다음을 수행하십시오.

cell = worksheet.acell('B1', value_render_option='FORMULA').value

# or

cell = worksheet.cell(1, 2, value_render_option='FORMULA').value

행 또는 열에서 모든 값 가져 오기

첫 번째 행에서 모든 값을 가져옵니다.

values_list = worksheet.row_values(1)

첫 번째 열에서 모든 값을 가져옵니다.

values_list = worksheet.col_values(1)

 

 

워크 시트의 모든 값을 목록 목록으로 가져 오기

list_of_lists = worksheet.get_all_values()

 

워크 시트의 모든 값을 목록 목록으로 가져와서 "특정단어"가 들어간 셀의 정보 찾기

1.png

 

list_of_lists = worksheet.get_all_values()
for ii in range(0,len(list_of_lists)):
    for iii in range(0,len(list_of_lists[ii])):
        if "값" in list_of_lists[ii][iii]:
            print(list_of_lists[ii][iii])
            cell = worksheet.find(list_of_lists[ii][iii])
            print("셀의 행,열번호 : "cell.row,cell.col)
            

결과>>

값1

셀의 행,열번호 :  4 2     >> 4번째 행의 B열의 값은 값1

미쳐 값!!!

셀의 행,열번호 :  5 1     >>  5번째 행의 A열의 값은 미쳐 값!!!

값싸다

셀의 행,열번호 :  5 4     >> 5번째 행의 D열의 값은 값싸다

 

 

 

워크 시트의 모든 값을 사전 목록으로 가져 오기

list_of_dicts = worksheet.get_all_records()

세포 찾기

문자열과 일치하는 셀 찾기 :

cell = worksheet.find("Dough")

print("Found something at R%sC%s" % (cell.row, cell.col))

정규식과 일치하는 셀 찾기

amount_re = re.compile(r'(Big|Enormous) dough')
cell = worksheet.find(amount_re)

일치하는 모든 셀 찾기

문자열과 일치하는 모든 셀 찾기 :

cell_list = worksheet.findall("Rug store")

정규 표현식과 일치하는 모든 셀을 찾습니다.

criteria_re = re.compile(r'(Small|Room-tiering) rug')
cell_list = worksheet.findall(criteria_re)

셀 개체

각 셀에는 값과 좌표 속성이 있습니다.

value = cell.value
row_number = cell.row
column_number = cell.col

셀 업데이트

A1 표기법 사용 :

worksheet.update('B1', 'Bingo!')

또는 행 및 열 좌표 :

worksheet.update_cell(1, 2, 'Bingo!')

범위 업데이트

worksheet.update('A1:B2', [[1, 2], [3, 4]])

range메소드 에서 가져 오거나 목록을 직접 만들 수 있습니다 .

a1 = worksheet.acell('A1')

c5 = worksheet.acell('C5')
a1.value = 'Hello'
c5.value = 'World'
wk.update_cells([a1, c5])

이렇게하면 한 번의 호출로 여러 셀이 업데이트됩니다.

 

 

0

Burnhash는 요청하지 않고는 Cell을 얻을 수있는 방법이 없다는 점에서 정확합니다. 그러나 더미 클래스를 사용하여 원하는 동작을 얻을 수있었습니다.

    class Cell:
        def __init__(self, c, r, v):
            self.col = c
            self.row = r
            self.value = v

    cell1 = Cell(1, 1, 'value1')  # A1
    cell2 = Cell(2, 1, 'value2')  # B1
    wk.update_cells([cell1, cell2])

 

 

서식

다음은 기본 서식의 예입니다.

설정 A1 : B1의 굵게 텍스트 형식 :

worksheet.format('A1:B1', {'textFormat': {'bold': True}})

A2 : B2 셀 범위 의 배경색을 검정색으로 지정하고 수평 정렬, 텍스트 색상 및 글꼴 크기를 변경합니다.

worksheet.format("A2:B2", {
    "backgroundColor": {
      "red": 0.0,
      "green": 0.0,
      "blue": 0.0
    },
    "horizontalAlignment": "CENTER",
    "textFormat": {
      "foregroundColor": {
        "red": 1.0,
        "green": 1.0,
        "blue": 1.0
      },
      "fontSize": 12,
      "bold": True
    }
})

의 두 번째 인수 format()는 업데이트 할 필드가 포함 된 사전입니다. 형식 옵션의 전체 사양은 Sheet API Reference의 CellFormat 에서 확인할 수 있습니다 .

gspread-formatting 은 기본을 넘어 설 때 도움이되는 광범위한 기능을 제공합니다.

Pandas와 함께 gspread 사용

pandas 는 데이터 분석을위한 인기있는 라이브러리입니다. 시트에서 pandas DataFrame으로 데이터를 가져 오는 가장 간단한 방법은 다음을 사용하는 것입니다 get_all_records().

import pandas as pd

dataframe = pd.DataFrame(worksheet.get_all_records())

다음은 시트에 데이터 프레임을 쓰는 기본 예입니다. 함께 update()우리 dataframe의 값에 따르는 시트의 첫 번째 행으로 dataframe의 헤더를 입력 :

import pandas as pd

worksheet.update([dataframe.columns.values.tolist()] + dataframe.values.tolist())

고급 Pandas 사용 사례는 다음 라이브러리를 확인하세요.

NumPy와 함께 gspread 사용

NumPy 는 Python의 과학 컴퓨팅을위한 라이브러리입니다. 고성능 다차원 배열 작업을위한 도구를 제공합니다.

시트의 내용을 NumPy 배열로 읽습니다.

import numpy as np
array = np.array(worksheet.get_all_values())

위의 코드는 데이터가 시트의 첫 번째 행에서 시작한다고 가정합니다. 당신이 첫 번째 행 머리글 행이있는 경우 교체 필요 worksheet.get_all_values()로 worksheet.get_all_values()[1:].

시트에 NumPy 배열을 씁니다.

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])

# Write the array to worksheet starting from the A2 cell
worksheet.update('A2', array.tolist())

 

 

 

 

 

 

 

 

로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
753 [Docs]스프레드시트 구글 스프레드시트 ajax POST를 통한 기록 따라해보기 file 2018.01.13 5888
752 Excel 엑셀 파일을 utf-8 유니코드로 csv 파일로 저장하기 file 2017.12.22 10614
751 Server 초간단 웹서버와 파일서버 프로그램 file 2017.12.12 5701
750 HTMLPHPMSQL mysqli로 DB 검색 조회 2017.11.08 6140
749 컴퓨터잡담 핑테스트(PINGINFOVIEW)와 TCPVIEW file 2017.09.21 2098
748 Server 우린친구블로그 서버 다운해결방법과 MYSQL 실행 안될 때 복구방법 file 2017.06.21 5433
747 Server XE 모바일 default 기본스킨 views 값 나타내기 file 2017.05.06 6369
746 Server 서버 다운시 알람 기능 사용방법(http ping port) file 2017.05.04 9844
745 [Docs]스프레드시트 구글 스프레드시트를 이용한 지메일 예약발송 방법 file 2017.04.30 10224
744 Server 댓글쓰기 - 스케치북 게시판 로그인 사용자만 댓글쓰기 2017.04.05 4895
743 Server FileZilla FTP SERVER 패시브모드 셋팅방법 file 2016.12.22 7803
742 Server ZipperUpper! 애드온 이런것이 있었다니? file 2016.12.14 4380
741 Server PuTTY Download Page(telnet,ftp,ssh) file 2016.12.06 5264
740 Server V2824 User Manual 1 file 2016.12.06 10021
739 Server XE 스케치북 게시판 웹진형에서 사진과 요약글 출력방법 file 2016.12.05 4919
738 Server Server 성능 테스트 secret 2016.11.30 60
737 Server 웹서버에서의 램디스크 엄청난 효과 비교하기 file 2016.11.27 4650
736 컴퓨터잡담 크롬 캐시파일 삭제방법(Chrome cache file delete) file 2016.11.27 2500
735 Server Minify로 CSS, JS파일, gzip으로 한꺼번에 압축해서 전송하기 file 2016.11.27 4051
734 Server 램드라이브를 이용한 mysql 번개속도로 개선방법 file 2016.11.27 4892
Board Pagination Prev 1 ... 5 6 7 8 9 ... 44 Next
/ 44

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소