在For Loop Python中更新Google Sheet单元格

mklgxw1f  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(177)

我有一个for循环,它逐行从google表单中读取信息,根据提供的信息登录到交换机并配置端口。我想补充一下,每次它遍历行中的数据时,都会在同一行的Notes单元格中写入CONFIGURED。下面是一个电子表格的示例:https://docs.google.com/spreadsheets/d/1Rg5Mhic8omQdlphIZNDPgbVBdLMj6WzPdmgz5XsJKb4/edit?usp=sharing
我正在使用gspreads,当我这样做时,它只更新第一个匹配单元格中的CONFIGURED。

sheet = file.open("SPREADSHEET")
    sheet = sheet.sheet1 

    mydata = sheet.get_all_records()

    datetoday = time.strftime('%m-%d-%y', localtime)

    for row in mydata:
        if row["Date"] == datetoday: 
            #
            #all the netmiko stuff to configure the port goes here
            #
            coordinates = sheet.find(datetoday)
            cell_info=("F"+str(coordinates.row))
            sheet.update(cell_info,"TEST")
2w3rbyxf

2w3rbyxf1#

我相信你的目标如下。

  • 您在Google电子表格的第一个选项卡中有以下工作表。
资产ID日期姓名IP地址港口注意事项
一二三四2019 - 05 - 16SWITCH011.1.1.1g1/1/1
三四五六2019 - 05 - 16SWITCH011.1.1.1ge1/1/2
  • datetoday的值为05/16/23时,您希望将CONFIGURED的值放置到列“F”(列“注解”)的同一行。

修改要点:

  • 在电子表格中,日期的格式为05/16/23。但是,您的脚本使用了%m-%d-%y。在这种情况下,它应该是%m/%d/%y
  • 电子表格有一个标题行。必须考虑这一点。
  • 在您的脚本中,update在循环中使用。在这种情况下,处理成本变高。而且,Sheets API使用了几次。

当这些点反映在你的脚本中时,下面的修改怎么样?

修改脚本:

localtime = time.localtime() # This is a sample value. Please use this for your actual situation/
value = "CONFIGURED" # This is from your question.

sheet = file.open("SPREADSHEET")
sheet = sheet.sheet1
mydata = sheet.get_all_records()
datetoday = time.strftime("%m/%d/%y", localtime)
body = [{"range": "F" + str(i + 2), "values": [[value]]} for i, row in enumerate(mydata) if row["Date"] == datetoday]
if body != []:
    sheet.batch_update(body, value_input_option="USER_ENTERED")

运行此脚本时,“CONFIGURED”被放入搜索值datetoday的“F”列。

注意:

  • 修改后的脚本假设您已经能够使用Sheets API获取值并将值放入Google电子表格。请小心点。

参考:

  • batch_update(data,**kwargs)

相关问题