我发送API调用到谷歌表检索信息,像这样:
gc = gspread.authorize(credentials)
def grab_available_row(wks):
str_list = list(filter(None, wks.col_values(17)))
return str(len(str_list)+1)
wks = gc.open("test").worksheet("Logs")
grab_row = grab_available_row(wks)
try:
GrabRequestTest = wks.acell("B{}".format(grab_row)).value
except:
pass
try:
print(GrabRequestTest)
ctypes.windll.user32.MessageBoxW(0, "DONE!!!", "DONE!!!", 1)
sys.exit()
except:
pass
,我可以在任何检索信息行如果没有值出现在列# 17。换句话说,这实际上是从第一个可用行的第17列中读取任何内容。如果我在第17列放一个X,它将读取它下面的行。这可不是我要找的。
我希望能够在第17列中出现特定字符(如X)的行中打印所有值,并忽略所有其他行。然后,我将从第17列中包含X的每一行获取数据,并使用邮件合并生成一堆.docx文件。我很容易算出第二部分。有人知道怎么完成第一部分吗?(打印第17列中X所在行的值)
从I'd like to be able to print all values in a row where a specific character like X is present in column 17, and ignore all other rows. I'd then take the data from each row with X present in column 17 and use mail merge to generate a bunch of .docx files. I can easily figure out the second part. Anybody know how to accomplish the first part? (print values in a specific row where X is present in column 17)
,我相信你的目标在这个问题是这样的。
- 您希望根据第17列(它的列"Q")的特定值检索过滤的行。
- 你想在python中使用gspread来实现这一点。
在这种情况下,下面的修改如何?
修改脚本:
gc = gspread.authorize(credentials)
wks = gc.open("test").worksheet("Logs")
search = "X" # Please set the search value you expect.
values = [r for r in wks.get_all_values() if r[16] == search]
print(values)
- 当这个脚本运行时,列"Q"为
search
的值,以二维数组的形式检索。
补充道:
从以下回复中,
差不多了!如何仅按列打印?比如,我只想要数组中第三列的值。Print (values[4])似乎不工作。
在这种情况下,下面的示例脚本如何?
示例脚本:
gc = gspread.authorize(credentials)
wks = gc.open("test").worksheet("Logs")
search = "X" # Please set the search value you expect.
col = 3 # From your reply, the values of the column "C" is retrieved.
values = [r[col - 1] for r in wks.get_all_values() if r[16] == search]
print(values)