我正在尝试在Python/gspread的帮助下做一个价格竞争的工具。在谷歌表格中,我有B3:B列与竞争者的链接,D3:D列与竞争者的价格。除了我只能对一个单元格使用这个技巧,其他的都可以。 然而,我想要它为整个(列)单元格范围。 知道我怎么更新这个吗? “sht1.worksheet (“Sheet1”)。update_acell (D3,价格) 更新整个列D3:D? 提前谢谢你 问题来源StackOverflow 地址:/questions/59466832/python-gspread-update-multiple-cells-with-different-values
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用gspread库操作Google Sheets时,如果您想更新一整列的多个单元格(例如D3:D),而不是仅更新单个单元格,您需要遍历该列的所有行,并对每个单元格单独进行更新。由于直接更新整个列的操作在gspread中并不直接支持,因此采用循环是实现这一需求的常见方法。
下面是一个示例代码片段,展示了如何遍历D列并根据您的需求更新价格:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# 请确保替换这里的路径为您的凭证文件路径
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('your_credentials.json', scope)
client = gspread.authorize(creds)
# 打开你的工作簿和工作表
sht1 = client.open("Your Spreadsheet Name").worksheet("Sheet1")
# 假设你有一个包含新价格的列表,与D列的行一一对应
new_prices = [...] # 这里填入你的新价格列表
# 遍历D列并更新价格
for row in range(3, sht1.row_count + 1): # 假定数据从第3行开始
cell = sht1.cell(row, 4) # 列D的索引是4
if cell.value: # 确保该单元格有值才更新,避免空行问题
# 这里简单地假设new_prices列表的索引与行号相对应
new_price = new_prices[row - 3] # 调整索引以匹配实际行号
sht1.update_cell(row, 4, new_price) # 更新单元格
请注意,上述代码中的new_prices
列表应该包含您想要写入每一行的新价格。如果您的价格计算逻辑更复杂,您可能需要相应地调整这个列表的生成方式。此外,为了效率考虑,如果您有大量的更新操作,考虑使用batch_update()方法来批量执行更改可能会更加高效。