![](/img/trans.png)
[英]How do I rename a (work)sheet in a Google Sheets spreadsheet using the API in Python?
[英]How do I iteratively parse data from each “sub-sheet” in a Google spreadsheet using their API?
语言:Python
我试图遍历Google Spreadsheet中的每个“子工作表”或工作表,并解析其数据。 最终,它将用于创建本地.csv
文件。
我尝试使用gspread和gsheets来解决此问题,但是两者都存在身份验证错误,因此我不得不直接使用API。
Google Spreadsheets API上的所有示例都从特定范围中获取所有值,如“从工作表Sheet1中的A1:A4行获取所有内容”中所示 。 这对我不利,因为我的脚本需要遍历电子表格中的许多工作表,因此我正在解析所有数据,而我事先不知道工作表名称。
根据文档,Sheet对象应该有一个“数据”字段,但是我所有的curr_sheet.get('data')
解析都返回None: https : //developers.google.com/sheets/api/reference/rest/ v4 /电子表格/表格#Sheet
我要解析的Excel工作表如下所示: https : //i.gyazo.com/62606b2434435d34dd3ba9fbd9825a52.png
sheet = service.spreadsheets()
result=sheet.get(spreadsheetId=SPREADSHEET_ID).execute()
print(result2)
all_sheets = result.get('sheets')
for curr_sheet in all_sheets:
print(curr_sheet)
我需要解析特定行中的单个值,然后在本地将文件另存为.csv
。 我将问题的范围缩小到遍历特定的工作表,因此,我们将不胜感激任何帮助!
如果我的理解是正确的,那么该修改如何。 请认为这只是几个答案之一。
result=sheet.get(spreadsheetId=SPREADSHEET_ID, fields='sheets/data').execute()
方法检索数据,请将sheets/data
添加到诸如result=sheet.get(spreadsheetId=SPREADSHEET_ID, fields='sheets/data').execute()
。 但我想提出以下流程,因为电子表格.values.batchGet检索的值比电子表格.get方法检索的值更具可读性。
通过将两者结合起来,可以检索电子表格中所有工作表的所有值。
sheet = service.spreadsheets()
sheets = sheet.get(spreadsheetId=SPREADSHEET_ID, fields='sheets/properties/title').execute()
ranges = [sheet['properties']['title'] for sheet in sheets['sheets']]
values = sheet.values().batchGet(spreadsheetId=SPREADSHEET_ID, ranges=ranges).execute()
print(values)
当运行上述脚本时,将返回以下值。
{
"spreadsheetId":"###",
"valueRanges":[
{
"range":"Sheet1!A1:Z1000",
"majorDimension":"ROWS",
"values":[["a1","b1","c1"],["a2","b2","c2"],["a3","b3","c3"]]
}
{
"range":"Sheet2!A1:Z1000",
"majorDimension":"ROWS",
"values":[["a1","b1","c1"],["a2","b2","c2"],["a3","b3","c3"]]
}
,
,
,
]
}
["a1","b1","c1"]
是第一行。 b1
是列“ B”。 如果这不是您想要的结果,我深表歉意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.