这个答案怎么样?
问题:
update_cells() 的 gspread 使用 Sheets API 中的 spreadsheets.values.update 方法。在这种情况下,为了创建用于放置值的列表,使用utils.py 文件中的cell_list_to_rect() 函数。这时候,在你的脚本中,当cells按如下顺序创建时,
gspread.models.Cell(josa_row+2, 2, tweet.text)
gspread.models.Cell(josa_row+3, 1, "END")
gspread.models.Cell(josa_row+3, 2, josa_place_vals[coord[0]-1][coord[1]-1])
[[tweet.text], [josa_place_vals[coord[0]-1][coord[1]-1]]] 被创建为用于放置值的列表。 gspread.models.Cell(josa_row+3, 1, "END") 不在列表中。
当cells按以下顺序创建时,
gspread.models.Cell(josa_row+2, 2, tweet.text)
gspread.models.Cell(josa_row+2, 1, location[0]+"/"+str(coord[0])+"/"+str(coord[1]))
gspread.models.Cell(josa_row+3, 2, josa_place_vals[coord[0]-1][coord[1]-1])
[[tweet.text], [josa_place_vals[coord[0]-1][coord[1]-1]]] 被创建为用于放置值的列表。 location[0]+"/"+str(coord[0])+"/"+str(coord[1]) 不在列表中。
似乎当从cells创建用于将值放入电子表格的列表时,这些值被cell_list_to_rect()的函数在utils.py的文件中删除。
从上面的结果,当使用gspread的gspread.models.Cell时,发现坐标附加值的顺序很重要。
解决办法:
如果你不想修改gspread的原始脚本,而想修改你的脚本,则需要考虑cells中每个值的顺序。它以行和列的小顺序附加值。那么下面的修改呢?
我认为您的情况有几个修改,所以请认为这只是几个答案之一。
修改脚本:
cells=[]
cells.append(gspread.models.Cell(josa_row+2, 2, tweet.text))
if josa_place_vals[coord[0]-1][coord[1]]=="END":
cells.insert(0, gspread.models.Cell(josa_row+2, 1, "")) # Added
cells.append(gspread.models.Cell(josa_row+3, 1, "END"))
else:
cells.insert(0, gspread.models.Cell(josa_row+2, 1, location[0]+"/"+str(coord[0])+"/"+str(coord[1]))) # Modified
cells.append(gspread.models.Cell(josa_row+3, 2,
josa_place_vals[coord[0]-1][coord[1]-1]))
josa_record.update_cells(cells)
注意:
- 在此答案中,假设您已经能够使用 gspread 为电子表格放置和获取值。
参考资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
补充:
作为另一种模式,使用sort()怎么样?
修改脚本:
cells=[]
cells.append(gspread.models.Cell(josa_row+2, 2, tweet.text))
if josa_place_vals[coord[0]-1][coord[1]]=="END":
cells.append(gspread.models.Cell(josa_row+2, 1, "")) # Added
cells.append(gspread.models.Cell(josa_row+3, 1, "END"))
else:
cells.append(gspread.models.Cell(josa_row+2, 1, location[0]+"/"+str(coord[0])+"/"+str(coord[1])))
cells.append(gspread.models.Cell(josa_row+3, 2,
josa_place_vals[coord[0]-1][coord[1]-1]))
cells.sort(key=lambda x: (x._row, x._col)) # Added
josa_record.update_cells(cells)