Gspread - 插入新行后立即向下移动列

时间:2015-08-20 12:29:09

标签: python gspread

我有一个小脚本,可以从API获取数据并将其写入谷歌电子表格。这适用于gspread。

我希望每天晚上运行脚本以检查新的更新。

目前它看起来像这样

活动日期 - 活动地点 - 表演者 - 评论

问题是最后一行将手动插入,前三行将是从json文件中提供的数据。

如果我在星期一晚上运行脚本并且日期如下:

15/10/1 - comment for the 1st
15/10/2 - comment for the 2nd
15/10/10 - comment for the 10th

然后在星期二15/10/5添加它将正确覆盖单元格但注释将保留在手动添加的同一行上。像这样:

15/10/1 - comment for the 1st
15/10/2 - comment for the 2nd
15/10/5 - comment for the 10th
15/10/10 - no comment

我如何确保即使插入了一些新行,相应的评论也会向下移动。

数据只是被重写而不是被推下来。

 def getActivity(query):

   data = query.get_data("/events/event%3Aprofile%3A%22demo(c)%22%20event%3Adate%3A%23next365days%20(event%3Alocation%3Aconcertzaal%20%2B%20event%3Alocation%3Atheaterzaal%20%2B%20event%3Alocation%3Abalzaal%20%2B%20event%3Alocation%3Acafe)")
   i=0

   eventdata = {}

   for w in data["data"]:
     id=data["data"][i]["id"]
     location = data['data'][i]['locations'][0]['name']
     start = data['data'][i]['starttime']
     artiest = data['data'][i]['name']
     status = data['data'][i]['status']['name']

     eventdata[start] = [lokatie, artiest, status]

     i=i+1

   return eventdata


 def exportToSheet(query, worksheet, eventdata):

   # worksheet.update_cell(5, 5, naam)
   cellOffset = 2

   for key in sorted(eventdata):

     start = key
     location = eventdata[key][0]
     artiest = eventdata[key][1]
     status = eventdata[key][2]




     if location == "CONCERTZAAL":
       worksheet.update_cell(cellOffset, 1, start)
       worksheet.update_cell(cellOffset, 3, artiest)
       worksheet.update_cell(cellOffset, 4, status)
       cellOffset=cellOffset+1

     if location == "BALZAAL":
       worksheet.update_cell(cellOffset, 5, start)
       worksheet.update_cell(cellOffset, 7, artiest)
       worksheet.update_cell(cellOffset, 8, status)
       cellOffset=cellOffset+1

     if location == "THEATERZAAL":
       worksheet.update_cell(cellOffset, 9, start)
       worksheet.update_cell(cellOffset, 11, artiest)
       worksheet.update_cell(cellOffset, 12, status)
       cellOffset=cellOffset+1




   worksheet.update_cell(1,1, "CONCERTZAAL")
   worksheet.update_cell(1,2, "Opmerking")
   worksheet.update_cell(1,3, "Artist")
   worksheet.update_cell(1,4, "Status")

   worksheet.update_cell(1,5, "BALZAAL")
   worksheet.update_cell(1,6, "Opmerking")
   worksheet.update_cell(1,7, "Artist")
   worksheet.update_cell(1,8, "Status")

   worksheet.update_cell(1,9, "THEATERZAAL")
   worksheet.update_cell(1,10, "Opmerking")
   worksheet.update_cell(1,11, "Artist")
   worksheet.update_cell(1,12, "Status")

如果有帮助,这就是excel的样子: https://i.gyazo.com/85a3b2de5a5fd3e2b1d0c7877b5d5921.png

1 个答案:

答案 0 :(得分:0)

我的解决方法如下:

我将自定义字段与事件的相关ID一起保存。

然后我清除整个事情,输入新数据。

然后我循环保存的评论/ ID并搜索包含旧保存ID的字段,并将评论粘贴到正确的单元格中。

相当多的代码,但这有效!