2016-12-04 53 views
1

在我的應用程序中,我有一堆單元格不在範圍內。目前我正在逐一更新它們,但需要很長時間。我想通過一次電話就批量更新它們。gspread更新多個單元格不在範圍內

我看了一些其他SO線程,如this,但在我的情況下,單元格不在範圍內。

爲了簡化這裏是什麼,我想實現一個例子:

worksheet.update_acell("A1", "test1") 
worksheet.update_acell("C5", "test2") 

是否可以更新細胞不在範圍內的一個電話嗎?

+0

我相信加載所有的表可以更快,根據需要操作您的數據,然後再次更新所有的表。 –

+0

例如,您可以嘗試以下方法:http://stackoverflow.com/questions/34400635/how-to-write-a-table-list-of-lists-to-google-spreadsheet-using-gspread。如果你的表不是太大,它可能很有效率。 –

回答

1

是的,這是可能的。你可以使用Worksheet.update_cells這個方法。

該方法的參數是一個Cell對象的列表,這個列表來自何處並不重要。您可以從range方法獲得它或自己創建的列表:

a1 = worksheet.acell('A1') 
c5 = worksheet.acell('C5') 
a1.value = 'Hello' 
c5.value = 'World' 
wk.update_cells([a1, c5]) 

這一次調用更新多個單元格。

+0

嗨Burnash,謝謝你的回答。問題在於,通過acell讀取單元仍然會對API進行個別調用,這很耗時。如果還有另一種方法來創建單元格對象而不先閱讀它,那麼這將是最完美的答案。 – apadana

+0

這是真的。現在要獲得一個'Cell'實例,您需要提出請求。在底層,它會獲取構建另一個xml所需的一段xml以發出更新請求。雖然您的里程可能會有所不同,但通常讀取請求比寫入請求更快。所以,當使用一個'update_cells()'與多個更新請求時,你仍然會得到改進。 – Burnash

+0

看起來像一個類似的問題已經提出https://github.com/burnash/gspread/issues/376 – Burnash