อินเทอร์เฟซที่เรียบง่ายสำหรับการทำงานกับ 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
ไม่สามารถเป็นรายการได้อีกต่อไป และต้องเป็นอาร์เรย์ 2 มิติ
- 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 ใช้การแสดงสีเลขฐานสิบหก เปลี่ยนสีทั้งหมดเป็นเลขฐานสิบหก คุณสามารถใช้ฟังก์ชันความเข้ากันได้ gspread.utils.convert_colors_to_hex_value()
เพื่อแปลงพจนานุกรมเป็นสตริงเลขฐานสิบหก
- 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
ในเวอร์ชัน 6 ตอนนี้คุณสามารถรับได้เฉพาะชีตเรคคอร์ด ทั้งหมด โดยใช้ 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/
วิธีที่ดีที่สุดในการรับคำตอบของคำถามคือการถามใน Stack Overflow ด้วยแท็ก gspread
รายชื่อผู้ร่วมสมทบ
โปรดใช้เวลาสักครู่และอ่านหลักจรรยาบรรณ
กรุณารายงานข้อบกพร่องและแนะนำคุณสมบัติผ่านทางปัญหา GitHub
ก่อนที่จะเปิดปัญหา ให้ค้นหาตัวติดตามเพื่อหารายการซ้ำที่เป็นไปได้ หากคุณพบรายการที่ซ้ำกัน โปรดเพิ่มความคิดเห็นว่าคุณประสบปัญหาเช่นกัน
เอกสารมีความสำคัญเท่ากับรหัส หากคุณทราบวิธีทำให้สอดคล้อง อ่านง่ายและชัดเจนยิ่งขึ้น โปรดส่งคำขอดึงข้อมูล ไฟล์เอกสารอยู่ในโฟลเดอร์ docs
ใช้มาร์กอัป reStructuredText และเรนเดอร์โดย Sphinx
โปรดตรวจสอบให้แน่ใจว่าได้อ่านคู่มือการมีส่วนร่วมก่อนที่จะทำการดึงคำขอ