Google 스프레드시트 작업을 위한 간단한 인터페이스입니다.
특징:
pip install gspread
요구 사항: Python 3.8+.
Google API 콘솔에서 자격 증명 만들기
gspread 사용 시작
import gspread
gc = gspread . service_account ()
# Open a sheet from a spreadsheet in one go
wks = gc . open ( "Where is the money Lebowski?" ). sheet1
# Update a range of cells using the top left corner address
wks . update ([[ 1 , 2 ], [ 3 , 4 ]], "A1" )
# Or update a single cell
wks . update_acell ( "B42" , "it's down there somewhere, let me take another look." )
# Format the header
wks . format ( 'A1:B1' , { 'textFormat' : { 'bold' : True }})
Python 3.7은 수명이 종료되었습니다. gspread v6에는 최소 Python 3.8이 필요합니다.
Worksheet.update
인수 변경 처음 두 개의 인수( values
& range_name
)가 ( range_name
& values
로) 교체되었습니다. 이를 바꾸거나(v6에서만 작동) 명명된 인수를 사용하십시오(v5 및 v6에서 작동).
또한 values
더 이상 목록이 될 수 없으며 2D 배열이어야 합니다.
- file.sheet1.update([["new", "values"]])
+ file.sheet1.update([["new", "values"]]) # unchanged
- file.sheet1.update("B2:C2", [["54", "55"]])
+ file.sheet1.update([["54", "55"]], "B2:C2")
# or
+ file.sheet1.update(range_name="B2:C2", values=[["54", "55"]])
v6에서는 16진수 색상 표현을 사용합니다. 모든 색상을 16진수로 변경합니다. 호환성 함수 gspread.utils.convert_colors_to_hex_value()
사용하여 사전을 16진수 문자열로 변환할 수 있습니다.
- tab_color = {"red": 1, "green": 0.5, "blue": 1}
+ tab_color = "#FF7FFF"
file.sheet1.update_tab_color(tab_color)
- age = spreadsheet.lastUpdateTime
+ age = spreadsheet.get_lastUpdateTime()
Worksheet.get_records
v6에서는 이제 Worksheet.get_all_records()
사용하여 모든 시트 레코드만 가져올 수 있습니다. Worksheet.get_records()
메서드가 제거되었습니다. 자신만의 가져오기를 사용하여 일부 레코드를 가져와 gspread.utils.to_records()
와 결합할 수 있습니다.
+ from gspread import utils
all_records = spreadsheet.get_all_records(head=1)
- some_records = spreadsheet.get_all_records(head=1, first_index=6, last_index=9)
- some_records = spreadsheet.get_records(head=1, first_index=6, last_index=9)
+ header = spreadsheet.get("1:1")[0]
+ cells = spreadsheet.get("6:9")
+ some_records = utils.to_records(header, cells)
버전 5에는 더 이상 사용되지 않는 기능/함수/메서드를 표시하라는 경고가 많이 있습니다. GSPREAD_SILENCE_WARNINGS
환경 변수를 1
로 설정하여 침묵시킬 수 있습니다.
gspread.Worksheet.__init__
에 더 많은 데이터를 추가하세요. gc = gspread.service_account(filename="google_credentials.json")
spreadsheet = gc.open_by_key("{{key}}")
properties = spreadsheet.fetch_sheet_metadata()["sheets"][0]["properties"]
- worksheet = gspread.Worksheet(spreadsheet, properties)
+ worksheet = gspread.Worksheet(spreadsheet, properties, spreadsheet.id, gc.http_client)
# You can open a spreadsheet by its title as it appears in Google Docs
sh = gc . open ( 'My poor gym results' ) # <-- Look ma, no keys!
# If you want to be specific, use a key (which can be extracted from
# the spreadsheet's url)
sht1 = gc . open_by_key ( '0BmgG6nO_6dprdS1MN3d3MkdPa142WFRrdnRRUWl1UFE' )
# Or, if you feel really lazy to extract that key, paste the entire url
sht2 = gc . open_by_url ( 'https://docs.google.com/spreadsheet/ccc?key=0Bm...FE&hl' )
sh = gc . create ( 'A new spreadsheet' )
# But that new spreadsheet will be visible only to your script's account.
# To be able to access newly created spreadsheet you *must* share it
# with your email. Which brings us to…
sh . share ( '[email protected]' , perm_type = 'user' , role = 'writer' )
# Select worksheet by index. Worksheet indexes start from zero
worksheet = sh . get_worksheet ( 0 )
# By title
worksheet = sh . worksheet ( "January" )
# Most common case: Sheet1
worksheet = sh . sheet1
# Get a list of all worksheets
worksheet_list = sh . worksheets ()
worksheet = sh . add_worksheet ( title = "A worksheet" , rows = "100" , cols = "20" )
sh . del_worksheet ( worksheet )
# With label
val = worksheet . get ( 'B1' ). first ()
# With coords
val = worksheet . cell ( 1 , 2 ). value
# Get all values from the first row
values_list = worksheet . row_values ( 1 )
# Get all values from the first column
values_list = worksheet . col_values ( 1 )
from gspread . utils import GridRangeType
list_of_lists = worksheet . get ( return_type = GridRangeType . ListOfLists )
값이 포함된 셀만 받습니다.
>> > worksheet . get ( "A1:B4" )
[[ 'A1' , 'B1' ], [ 'A2' ]]
값이 포함된 셀 주위의 직사각형 배열을 받습니다.
>> > worksheet . get ( "A1:B4" , pad_values = True )
[[ 'A1' , 'B1' ], [ 'A2' , '' ]]
값이 비어 있는지 여부에 관계없이 요청 크기와 일치하는 배열을 받습니다.
>> > worksheet . get ( "A1:B4" , maintain_size = True )
[[ 'A1' , 'B1' ], [ 'A2' , '' ], [ '' , '' ], [ '' , '' ]]
# Find a cell with exact string value
cell = worksheet . find ( "Dough" )
print ( "Found something at R%sC%s" % ( cell . row , cell . col ))
# Find a cell matching a regular expression
amount_re = re . compile ( r'(Big|Enormous) dough' )
cell = worksheet . find ( amount_re )
# Find all cells with string value
cell_list = worksheet . findall ( "Rug store" )
# Find all cells with regexp
criteria_re = re . compile ( r'(Small|Room-tiering) rug' )
cell_list = worksheet . findall ( criteria_re )
# Update a single cell
worksheet . update_acell ( 'B1' , 'Bingo!' )
# Update a range
worksheet . update ([[ 1 , 2 ], [ 3 , 4 ]], 'A1:B2' )
# Update multiple ranges at once
worksheet . batch_update ([{
'range' : 'A1:B2' ,
'values' : [[ 'A1' , 'B1' ], [ 'A2' , 'B2' ]],
}, {
'range' : 'J42:K43' ,
'values' : [[ 1 , 2 ], [ 3 , 4 ]],
}])
from gspread . utils import ValueRenderOption
# Get formatted cell value as displayed in the UI
>> > worksheet . get ( "A1:B2" )
[[ '$12.00' ]]
# Get unformatted value from the same cell range
>> > worksheet . get ( "A1:B2" , value_render_option = ValueRenderOption . unformatted )
[[ 12 ]]
# Get formula from a cell
>> > worksheet . get ( "C2:D2" , value_render_option = ValueRenderOption . formula )
[[ '=1/1024' ]]
import gspread
from gspread . utils import ValidationConditionType
# Restrict the input to greater than 10 in a single cell
worksheet . add_validation (
'A1' ,
ValidationConditionType . number_greater ,
[ 10 ],
strict = True ,
inputMessage = 'Value must be greater than 10' ,
)
# Restrict the input to Yes/No for a specific range with dropdown
worksheet . add_validation (
'C2:C7' ,
ValidationConditionType . one_of_list ,
[ 'Yes' ,
'No' ,]
showCustomUi = True
)
문서: https://gspread.readthedocs.io/
질문에 대한 답변을 얻는 가장 좋은 방법은 gspread 태그를 사용하여 Stack Overflow에 질문하는 것입니다.
기여자 목록
잠시 시간을 내어 행동강령을 읽어보시기 바랍니다.
GitHub 문제를 통해 버그를 보고하고 기능을 제안해 주세요.
이슈를 열기 전에 트래커에서 중복 가능성이 있는 항목을 검색하세요. 중복된 항목을 찾으면 문제가 발생했다는 내용의 댓글을 추가해 주세요.
문서화는 코드만큼 중요합니다. 보다 일관되고 읽기 쉽고 명확하게 만드는 방법을 알고 있다면 끌어오기 요청을 제출해 주세요. 문서 파일은 docs
폴더에 있으며 reStructuredText 마크업을 사용하고 Sphinx로 렌더링됩니다.
끌어오기 요청을 하기 전에 기여 가이드를 꼭 읽어보세요.