python - 删除索引后用空字符串更新python gspread列表
问题描述
我正在创建一个不和谐的机器人来组织列表,然后通过 gspread 将列表更新到谷歌表。列表更新得很好,但是,如果有人将自己从列表中删除,则相应的单元格不会被删除,除非有新人在列表中替换了它们。我认为这是因为 python 如何处理简单的空格的列表。因此 gspread 没有任何东西会忽略它。因此,我的问题是,如果列表不包含一个空字符串,我如何强制 gspread 用空字符串更新每个单元格?谢谢。
# Some codes
import gspread
gc = gspread.service_account(filename = 'a json')
sh = gc.open_by_key("a key")
# My lists
list1 = ["a","b","c"]
list2 = ["d","e","f"]
list_of_lists = [list1, list2]
# Update list into sheet
sh.values_update(
'Sheet1!A1:C2', # fixed cells
params={'valueInputOption': 'RAW'},
body={'values': list_of_lists}
)
输出
# Update with new list
list1.remove("a")
list2.remove("d")
# Rerun list update
sh.values_update(
'Sheet1!A1:C2', # fixed cells
params={'valueInputOption': 'RAW'},
body={'values': list_of_lists}
)
新输出
想要这个输出
解决方案
在这个答案中,使用了一个包含空值的虚拟列表。并且,这些值是使用batch_update
类 gspread.models.Worksheet 中的方法放置的。在这种情况下,使用一个 API 调用。
修改后的脚本:
sh = gc.open_by_key("a key")
sheetName = 'Sheet1' # Please set the sheet name.
worksheet = sh.worksheet(sheetName)
# My lists
list1 = ["a", "b", "c"]
list2 = ["d", "e", "f"]
list_of_lists = [list1, list2]
dummy = [[''] * len(e) for e in list_of_lists]
list1.remove("a")
list2.remove("d")
worksheet.batch_update([{
'range': 'A1:C2',
'values': dummy,
}, {
'range': 'A1:C2',
'values': list_of_lists,
}])
参考:
推荐阅读
- java - java ouaf上的类转换异常
- html - VBA 单击动态href
- javascript - 在 SVG 对象上使用 elementFromPoint 来检测放置目标
- matrix - Pepper 机器人:“LandmarkDetection”基于哪个身体框架?
- python - 基于当前月份的计算列
- android - 在Android中使用背景动画为元素设置动画
- wordpress - 容器中的 Visual Composer 嵌套简码
- java - 读取文件时如何跳过某些文本区域?
- javascript - 当发现跳过的案例(xdescribe 或 xit)时,配置业力以使测试执行失败?
- angular - 如何在 Safari 桌面上调试“此网页因出现问题而重新加载”