我刚开始使用Python(v3.8),并试图将其应用于实际的项目中。我使用了有关Google Sheets API的视频教程,并且能够使用它来处理单元格数据。现在,我正在尝试使用视频中包含的语法以这种方式来处理单元格内容,但遇到了麻烦:
假设我有20行+ 10列数据-日期,简短注释等。它应在H列的每一行中检查特定的字符串(“销售”),然后根据该字符串是否找到后,在末尾(同一行)的空白列(例如J列)中输入“是”或“否”。
pip install gspread oauth2client
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("this_file.json", scope)
client = gspread.authorize(creds)
sheet = client.open("Spreadsheet1").sheet1
data = sheet.get_all_records()
column_H = sheet.range(8)
for p in column_H:
if "Sales" in cell.value:
sheet.update_cell("Yes") #I'd like it to update the cell 2 rows to the right (column J)
else:
sheet.update_cell("No")
这是我到目前为止所掌握的。如您所见,其中没有任何内容可以告诉它更新同一行中的相应列J单元格。这里也可能存在其他问题。就像我说的,只是开始。
编辑:解决方案(从概念上来说)可以类似于...
if "Sales" in cell.value:
cell.value + 2 = "Yes" #+2 to denote updating value of cell two to the right, rather than the cell it's evaluating
else:
cell.value + 2 = "No"
只是在这里吐痰。
答案 0 :(得分:0)
如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
请按如下所示修改脚本。
从:data = sheet.get_all_records()
column_H = sheet.range(8)
for p in column_H:
if "Sales" in cell.value:
sheet.update_cell("Yes") #I'd like it to update the cell 2 rows to the right (column J)
else:
sheet.update_cell("No")
至:
data = sheet.get_all_values()
values = ["Yes" if e[7] == "Sales" else "No" for e in data]
cells = sheet.range("J1:J%d" % len(values))
for i, e in enumerate(cells):
e.value = values[i]
sheet.update_cells(cells)
values = ["Yes" if e == "Sales" else "No" for e in data]
。