gspread 清除特定单元格值

gspread clear specific cell value

我想清除特定单元格的值。目前我的脚本运行大致如下:

cell_list = worksheet.range(1, 1, len(rows), column_length)
for cell in cell_list:
    cell.value = rows[cell.row - 1][cell.col - 1]

worksheet.update_cells(cell_list)

我只想覆盖我的旧数据以保存一些 API 调用,因此我之前不使用 worksheet.clear()。一些新值可能是 None,然后应清除这些单元格。

我的问题是: 例如,如果我在单元格 B2 中有值“a”并且我现在将 B2 设置为值“None”(cell.value = None)并且我更新工作表“a”将住在B2。所以它没有更新单元格,旧值保持不变。

我可以将 B2 设置为空字符串,但问题在于它不是空单元格,因此如果我想在它之后排序(在浏览器中),它会将它列在顶部,因为它是一个空字符串而不是空的。如果我随后在浏览器中手动清除单元格并再次对其进行排序,它将按照我想要的方式进行排序。

更新说明:

我有一个单元格列表,我想用我的 table 中的新值更新它。可能发生一个单元格之前包含一个值,但更新后的单元格不应再包含一个值。

所以 A1 的旧值是例如“5”和 A1 的新值应该为空。 问题是,如果我将值 None 分配给单元格列表中的单元格,单元格将在更新后保留旧值。所以该值仍然是“5”。

如果我将一个空字符串传递到要更新的单元格中,则新单元格是空的,正如所希望的那样。但是现在有一个问题,排序对我来说不能正常工作,所以这对我来说不是一个选择。我之前也可以清除整个 table,但我尽量避免这种情况以节省 API 调用。

所以我正在寻找一种方法来告诉单元格它不包含值

我认为您的问题的原因是 worksheet.update_cells(cell_list)。在gspread中,ValueInputOption的默认值好像是RAW。我认为这样会发生这样的错误。所以为了避免这种情况,请修改如下。

发件人:

worksheet.update_cells(cell_list)

收件人:

worksheet.update_cells(cell_list, value_input_option='USER_ENTERED')
  • 通过这个修改,我认为""这个空字符串可以用来清除单元格。

参考文献: