# Google Spreadsheets Python API v4
![main workflow](https://img.shields.io/github/actions/workflow/status/burnash/gspread/main.yaml?logo=github)
![GitHub licence](https://img.shields.io/pypi/l/gspread?logo=github)
![GitHub downloads](https://img.shields.io/github/downloads-pre/burnash/gspread/latest/total?logo=github)
![documentation](https://img.shields.io/readthedocs/gspread?logo=readthedocs)
![PyPi download](https://img.shields.io/pypi/dm/gspread?logo=pypi)
![PyPi version](https://img.shields.io/pypi/v/gspread?logo=pypi)
![python version](https://img.shields.io/pypi/pyversions/gspread?style=pypi)
Simple interface for working with Google Sheets.
Features:
- Open a spreadsheet by **title**, **key** or **URL**.
- Read, write, and format cell ranges.
- Sharing and access control.
- Batching updates.
## Installation
```sh
pip install gspread
```
Requirements: Python 3.8+.
## Basic Usage
1. [Create credentials in Google API Console](http://gspread.readthedocs.org/en/latest/oauth2.html)
2. Start using gspread
```python
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}})
```
## v5.12 to v6.0 Migration Guide
### Upgrade from Python 3.7
Python 3.7 is [end-of-life](https://devguide.python.org/versions/). gspread v6 requires a minimum of Python 3.8.
### Change `Worksheet.update` arguments
The first two arguments (`values` & `range_name`) have swapped (to `range_name` & `values`). Either swap them (works in v6 only), or use named arguments (works in v5 & v6).
As well, `values` can no longer be a list, and must be a 2D array.
```diff
- 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"]])
```
### More
<details><summary>See More Migration Guide</summary>
### Change colors from dictionary to text
v6 uses hexadecimal color representation. Change all colors to hex. You can use the compatibility function `gspread.utils.convert_colors_to_hex_value()` to convert a dictionary to a hex string.
```diff
- tab_color = {"red": 1, "green": 0.5, "blue": 1}
+ tab_color = "#FF7FFF"
file.sheet1.update_tab_color(tab_color)
```
### Switch lastUpdateTime from property to method
```diff
- age = spreadsheet.lastUpdateTime
+ age = spreadsheet.get_lastUpdateTime()
```
### Replace method `Worksheet.get_records`
In v6 you can now only get *all* sheet records, using `Worksheet.get_all_records()`. The method `Worksheet.get_records()` has been removed. You can get some records using your own fetches and combine them with `gspread.utils.to_records()`.
```diff
+ 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)
```
### Silence warnings
In version 5 there are many warnings to mark deprecated feature/functions/methods.
They can be silenced by setting the `GSPREAD_SILENCE_WARNINGS` environment variable to `1`
### Add more data to `gspread.Worksheet.__init__`
```diff
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)
```
</details>
## More Examples
### Opening a Spreadsheet
```python
# 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')
```
### Creating a Spreadsheet
```python
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…
```
### Sharing a Spreadsheet
```python
sh.share('otto@example.com', perm_type='user', role='writer')
```
### Selecting a Worksheet
```python
# 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()
```
### Creating a Worksheet
```python
worksheet = sh.add_worksheet(title="A worksheet", rows="100", cols="20")
```
### Deleting a Worksheet
```python
sh.del_worksheet(worksheet)
```
### Getting a Cell Value
```python
# With label
val = worksheet.get('B1').first()
# With coords
val = worksheet.cell(1, 2).value
```
### Getting All Values From a Row or a Column
```python
# 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)
```
### Getting All Values From a Worksheet as a List of Lists
```python
from gspread.utils import GridRangeType
list_of_lists = worksheet.get(return_type=GridRangeType.ListOfLists)
```
### Getting a range of values
Receive only the cells with a value in them.
```python
>>> worksheet.get("A1:B4")
[['A1', 'B1'], ['A2']]
```
Receive a rectangular array around the cells with values in them.
```python
>>> worksheet.get("A1:B4", pad_values=True)
[['A1', 'B1'], ['A2', '']]
```
Receive an array matching the request size regardless of if values are empty or not.
```python
>>> worksheet.get("A1:B4", maintain_size=True)
[['A1', 'B1'], ['A2', ''], ['', ''], ['', '']]
```
### Finding a Cell
```python
# 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)
```
### Finding All Matched Cells
```python
# 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)
```
### Updating Cells
```python
# 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]],
}])
```
### Get unformatted cell value or formula
```python
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']]
```
### Add data validation to a range
```python
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],
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Google Spreadsheet Python API v4Google Sheets 配合使用的简单界面。特征通过标题、关键字或URL打开电子表格。读取、写入和格式化单元格区域。共享和访问控制。批量更新。安装pip install gspread要求Python 3.8+。基本用法在 Google API 控制台中创建凭据开始使用 gspreadimport gspreadgc = gspread.service_account()# Open a sheet from a spreadsheet in one gowks = gc.open("Where is the money Lebowski?").sheet1# Update a range of cells using the top left corner addresswks.update([[1, 2], [3, 4]], "A1")# Or update a single cellwks.update_acell("B42", "it's
资源推荐
资源详情
资源评论
收起资源包目录
Google 表格 Python API.zip (178个子文件)
.gitignore 149B
layout.html 1KB
tox.ini 1KB
ClientTest.test_openall.json 541KB
ClientTest.test_open_all_has_metadata.json 520KB
WorksheetTest.test_get_values_merge_cells_outside_of_range.json 214KB
CellTest.test_merge_cells.json 148KB
WorksheetTest.test_basic_filters.json 120KB
WorksheetTest.test_sort.json 116KB
CellTest.test_equality.json 114KB
CellTest.test_numeric_value.json 106KB
WorksheetTest.test_hide_show_worksheet.json 104KB
WorksheetTest.test_delete_row.json 102KB
WorksheetTest.test_batch_clear.json 101KB
SpreadsheetTest.test_add_del_worksheet.json 98KB
WorksheetTest.test_freeze.json 96KB
WorksheetTest.test_update_cell.json 96KB
WorksheetTest.test_resize.json 95KB
WorksheetTest.test_insert_row.json 94KB
WorksheetTest.test_find.json 92KB
WorksheetTest.test_worksheet_update_index.json 87KB
WorksheetTest.test_get_all_values_title_is_a1_notation.json 85KB
WorksheetTest.test_reorder_worksheets.json 84KB
CellTest.test_delete_named_range.json 84KB
WorksheetTest.test_delete_cols.json 82KB
CellTest.test_a1_value.json 82KB
WorksheetTest.test_get_all_values_date_time_render_options.json 81KB
WorksheetTest.test_group_columns.json 79KB
WorksheetTest.test_group_rows.json 79KB
WorksheetTest.test_get_all_values.json 79KB
WorksheetTest.test_update_acell.json 78KB
WorksheetTest.test_show_gridlines.json 78KB
WorksheetTest.test_findall.json 77KB
WorksheetTest.test_insert_cols.json 77KB
WorksheetTest.test_update_cells_noncontiguous.json 76KB
WorksheetTest.test_copy_cut_range.json 75KB
CellTest.test_properties.json 74KB
ClientTest.test_copy.json 74KB
WorksheetTest.test_worksheet_notes.json 74KB
ClientTest.test_import_csv.json 73KB
WorksheetTest.test_auto_resize_columns.json 73KB
WorksheetTest.test_hide_gridlines.json 73KB
WorksheetTest.test_update_title.json 73KB
SpreadsheetTest.test_worksheets_exclude_hidden.json 70KB
WorksheetTest.test_get_notes_2nd_sheet.json 68KB
WorksheetTest.test_hide_columns_rows.json 66KB
WorksheetTest.test_range_get_all_values.json 65KB
WorksheetTest.test_clear_tab_color.json 64KB
WorksheetTest.test_clear.json 64KB
WorksheetTest.test_get_returns_ValueRange_with_metadata.json 61KB
WorksheetTest.test_append_row_with_empty_value_and_table_range.json 61KB
WorksheetTest.test_append_row_with_empty_value.json 60KB
WorksheetTest.test_update_cells.json 60KB
WorksheetTest.test_update_cell_objects.json 59KB
WorksheetTest.test_update_cells_unicode.json 59KB
WorksheetTest.test_update_tab_color.json 58KB
WorksheetTest.test_get_merge_cells_and_unmerge_cells.json 57KB
SpreadsheetTest.test_worksheets.json 57KB
WorksheetTest.test_format.json 56KB
SpreadsheetTest.test_creationTime_prop.json 56KB
WorksheetTest.test_batch_update.json 55KB
WorksheetTest.test_get_values_and_combine_merged_cells.json 55KB
WorksheetTest.test_append_row.json 55KB
WorksheetTest.test_batch_get.json 54KB
WorksheetTest.test_update_and_get.json 54KB
WorksheetTest.test_update_cell_unicode.json 54KB
WorksheetTest.test_update_cell_multiline.json 54KB
WorksheetTest.test_range_unbounded.json 53KB
WorksheetTest.test_range.json 53KB
WorksheetTest.test_range_reversed.json 53KB
SpreadsheetTest.test_values_batch_get.json 50KB
SpreadsheetTest.test_get_worksheet_by_id.json 50KB
SpreadsheetTest.test_worksheet_iteration.json 50KB
WorksheetTest.test_batch_merged_cells.json 49KB
SpreadsheetTest.test_timezone_and_locale.json 49KB
SpreadsheetTest.test_values_get.json 49KB
WorksheetTest.test_cell.json 48KB
WorksheetTest.test_acell.json 48KB
ClientTest.test_open_by_name_has_metadata.json 45KB
ClientTest.test_create.json 45KB
SpreadsheetTest.test_update_title.json 43KB
WorksheetTest.test_get_values_merge_cells_with_named_range.json 43KB
WorksheetTest.test_get_values_merge_cells_from_centre_of_sheet.json 40KB
ClientTest.test_open_by_key_has_metadata.json 40KB
WorksheetTest.test_delete_protected_range.json 38KB
SpreadsheetTest.test_worksheet.json 38KB
SpreadsheetTest.test_get_worksheet.json 38KB
SpreadsheetTest.test_sheet1.json 38KB
WorksheetTest.test_get_notes.json 38KB
WorksheetTest.test_get_all_records_different_header.json 36KB
WorksheetTest.test_get_all_records_duplicate_keys.json 36KB
WorksheetTest.test_get_all_records.json 36KB
WorksheetTest.test_get_all_records_value_render_options.json 36KB
ClientTest.test_access_non_existing_spreadsheet.json 35KB
CellTest.test_define_named_range.json 34KB
WorksheetTest.test_get_all_records_with_keys_blank.json 33KB
WorksheetTest.test_get_values_with_args_or_kwargs.json 33KB
WorksheetTest.test_get_all_records_with_blank_final_headers.json 31KB
WorksheetTest.test_get_all_records_numericise_unformatted.json 30KB
WorksheetTest.test_get_values_can_emulate_get_with_kwargs.json 30KB
共 178 条
- 1
- 2
资源评论
徐浪老师
- 粉丝: 8058
- 资源: 7094
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功