我正在從谷歌作業表讀取資料,將資料寫入谷歌作業表,并希望重新排列作業表內的作業表:
CLIENT_SECRET_GOOGLE_SHEETS = r"client_secret_google_sheets.json"
creds = ServiceAccountCredentials.from_json_keyfile_name(CLIENT_SECRET_GOOGLE_SHEETS, GSHEETS_SCOPES)
client = gspread.authorize(creds)
sheet = client.open("my_worksheet")
worksheet_list = sheet.worksheets()
# worksheet_list
[<Worksheet 'Documentation' id:35>,
<Worksheet 'week 2' id:15>,
<Worksheet 'week 1' id:20>]
我想將其更改為:
[<Worksheet 'Documentation' id:35>,
<Worksheet 'week 1' id:20>,
<Worksheet 'week 2' id:15>]
我嘗試搜索此功能,但無法在gspread檔案中找到它。
更新
使用Tanaike 的答案后,順序不一致:
[<Worksheet 'Documentation' id:35>,
<Worksheet 'week 1' id:20>,
<Worksheet 'week 10' id:150>,
<Worksheet 'week 11' id:16>,
<Worksheet 'week 2' id:115>,]
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想重新對齊 Google 電子表格中的作業表。
- 您不想包含第一個作業表。您想按作業表名稱對除第一個選項卡之外的其他作業表進行排序。
- 您想使用 gspread for python 來實作這一點。
在這種情況下,以下示例腳本如何?
示例腳本:
在此修改中,除第一個選項卡外的作業表按 batchUpdate 方法排序。
client = ### # Please use your client in your script.
spreadsheetId = "###" # Please set the Spreadsheet ID.
# 1. Retrieve all sheets.
spreadsheet = client.open_by_key(spreadsheetId)
sheets = spreadsheet.worksheets()
sheets.pop(0)
# 2. Sort sheets except for 1st tab.
sortedSheets = sorted(sheets, key=lambda x: x.title)
# 3. Create request body.
requests = []
for i, sheet in enumerate(sortedSheets):
requests.append({
"updateSheetProperties": {
"properties": {
"index": i 1,
"sheetId": sheet.id
},
"fields": "index"
}
})
# 4. Request to Sheets API.
res = spreadsheet.batch_update({"requests": requests})
參考:
- 批處理更新(正文)
- 方法:電子表格.batchUpdate
- 更新表屬性請求
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/335183.html
