我目前正在编写一个python程序,该程序将从网站上抓取数据,然后将该信息写入Google电子表格中。根据每一行中包含的数据,将数据分为主电子表格内部的不同工作表。我一直在使用gspread的batch_update()函数发送多个请求,但它仅格式化sheet1而不格式化后续页面。我该怎么做才能使所有工作表的格式相同。
batch_update()通过googlesheets api调用sheets.batchUpdate()方法,该方法会影响整个电子表格,而不是影响我不了解的第一个工作表
creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)
client = gspread.authorize(creds)
vt = client.open(sheetName)
formatRequests = []
formatRequests.append({
"repeatCell" : {
"range" : {
"startColumnIndex" : 0,
"endColumnIndex" : 1
},
"cell" : {
"userEnteredFormat" : {
"numberFormat" : {
"type": "DATE",
"pattern" : "mmm dd, yyyy, hh:mm am/pm"
}
}
},
"fields" : "userEnteredFormat.numberFormat"
}
})
#... A bunch of other formatting appends
body = {
'requests' : formatRequests
}
vt.batch_update(body)
这只会格式化电子表格中的第一页
答案 0 :(得分:1)
如果我的理解是正确的,那么该修改如何?
请按如下所示修改脚本。
从:formatRequests = []
formatRequests.append({
"repeatCell" : {
"range" : {
"startColumnIndex" : 0,
"endColumnIndex" : 1
},
"cell" : {
"userEnteredFormat" : {
"numberFormat" : {
"type": "DATE",
"pattern" : "mmm dd, yyyy, hh:mm am/pm"
}
}
},
"fields" : "userEnteredFormat.numberFormat"
}
})
至:
formatRequests = []
worksheet_list = vt.worksheets() # Added
for sheet in worksheet_list: # Added
formatRequests.append({
"repeatCell": {
"range": {
"startColumnIndex": 0,
"endColumnIndex": 1,
"sheetId": sheet.id # Added
},
"cell": {
"userEnteredFormat": {
"numberFormat": {
"type": "DATE",
"pattern": "mmm dd, yyyy, hh:mm am/pm"
}
}
},
"fields": "userEnteredFormat.numberFormat"
}
})
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。