0

API からデータを取得し、それを Google スプレッドシートに書き込む小さなスクリプトがあります。これは gspread で動作します。

スクリプトを毎晩実行して、新しい更新を確認したいと考えています。

現在はこんな感じ

開催日 - 開催場所 - 出演者 - コメント

問題は、最後の行が手動で挿入され、最初の 3 行が 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 の外観です

4

1 に答える 1

0

私の回避策は次のとおりです。

イベントの関連 ID と一緒にカスタム フィールドを保存します。

その後、すべてをクリアし、新しいデータをフィードします。

次に、保存されたコメント/ID をループして、古い保存された ID を含むフィールドを検索し、コメントを正しいセルに貼り付けます。

かなりのコードですが、これでうまくいきます。

于 2015-08-21T13:24:09.223 に答える