Python gspread删除一系列单元格(向上)
使用Python的GSpread包,如何使用批处理更新删除一系列单元格 示例代码:Python gspread删除一系列单元格(向上),python,gspread,Python,Gspread,使用Python的GSpread包,如何使用批处理更新删除一系列单元格 示例代码: sheet_id = self.worksheet.gs_worksheet._properties['sheetId'] start_index_col = self.cell_data_by_row_col[0][0].col - 1 end_index_col = self.cell_data_by_row_col[0][-1].col - 1
sheet_id = self.worksheet.gs_worksheet._properties['sheetId']
start_index_col = self.cell_data_by_row_col[0][0].col - 1
end_index_col = self.cell_data_by_row_col[0][-1].col - 1
start_index_row = self.cell_data_by_row_col[0][0].row
end_index_row = self.cell_data_by_row_col[0][0].row
self.worksheet.gs_worksheet.batch_update({
'requests': [
{
'deleteRangeRequest': {
'range': {
'sheetId': sheet_id,
'startRowIndex': start_index_row,
'endRowIndex': end_index_row,
'startColumnIndex': start_index_col,
'endColumnIndex': end_index_col,
},
'shiftDimension': 'ROWS',
}
}
]
})
答复:
File "C:\Program Files\Python37\lib\site-packages\gspread\utils.py", line 559, in wrapper
return f(*args, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\gspread\models.py", line 1166, in batch_update
for vr in data
File "C:\Program Files\Python37\lib\site-packages\gspread\models.py", line 1166, in <listcomp>
for vr in data
TypeError: string indices must be integers
包装器中的文件“C:\Program Files\Python37\lib\site packages\gspread\utils.py”,第559行
返回f(*args,**kwargs)
文件“C:\Program Files\Python37\lib\site packages\gspread\models.py”,第1166行,在批更新中
数据中的虚拟现实
文件“C:\Program Files\Python37\lib\site packages\gspread\models.py”,第1166行,在
数据中的虚拟现实
TypeError:字符串索引必须是整数
我相信你的目标如下
- 您想使用Sheets API中“spreadsheets.batchUpdate”方法的
删除范围deleteRangeRequest
- 您希望使用gspread和python来实现这一点
- 在gspread,似乎
是类batch\u update(body)
的方法。在您的脚本中,我认为您可以使用它作为classgspread.models.Spreadsheet
的方法。我认为这就是gspread.models.Worksheet
字符串索引必须是整数的错误消息的原因。
类的batch_update(数据,**kwargs)
是“电子表格.值.批更新”的方法gspread.models.workeep
- 在“电子表格.批处理更新”方法中使用DeleteRangeRequest时,请将其用作
deleteRange
self.sheet.gs\u sheet
的变量。所以在这个修改中,我使用了另一个变量名
修改脚本:
参考资料:
res=spreadsheet.batch\u update({,,})
的res
时,您将获得什么值?和/或,例如,当start\u index\u col、end\u index\u col、start\u index\u row、end\u index\u row
分别为0、1、0、1
时,仅删除单元格“A1”?
spreadsheetId = "###" # Please set the Spreadsheet Id.
sheetName = "Sheet1" # Please set the sheet name.
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet_id = spreadsheet.worksheet(sheetName)._properties['sheetId']
start_index_col = self.cell_data_by_row_col[0][0].col - 1
end_index_col = self.cell_data_by_row_col[0][-1].col - 1
start_index_row = self.cell_data_by_row_col[0][0].row
end_index_row = self.cell_data_by_row_col[0][0].row
spreadsheet.batch_update({
'requests': [
{
'deleteRange': {
'range': {
'sheetId': sheet_id,
'startRowIndex': start_index_row,
'endRowIndex': end_index_row,
'startColumnIndex': start_index_col,
'endColumnIndex': end_index_col,
},
'shiftDimension': 'ROWS',
}
}
]
})