2013-05-21 8 views
5

Per aggiornare un intervallo di celle, utilizzare il seguente comando.Python/gspread - come posso aggiornare più celle con VALORI DIVERSI in una volta?

## Select a range 
cell_list = worksheet.range('A1:A7') 

for cell in cell_list: 
    cell.value = 'O_o' 

## Update in batch 
worksheet.update_cells(cell_list) 

Per la mia domanda, vorrei che per aggiornare un intero campo, ma sto cercando di impostare un valore diverso per ogni singola cella. Il problema con questo esempio è che ogni cella finisce con lo stesso valore. Aggiornare ogni singola cella è inefficiente e richiede troppo tempo. Come posso farlo in modo efficiente?

risposta

9

È possibile utilizzare enumerare in un elenco separato contenente i diversi valori desiderati nelle celle e utilizzare la parte indice della tupla per far corrispondere le celle appropriate in elenco_celle.

cell_list = worksheet.range('A1:A7') 
cell_values = [1,2,3,4,5,6,7] 

for i, val in enumerate(cell_values): #gives us a tuple of an index and value 
    cell_list[i].value = val #use the index on cell_list and the val from cell_values 

worksheet.update_cells(cell_list) 
+0

E restituisce '1' per la prima colonna, e 'none' per il rimanente – ecollis6

+1

L'esempio fornisce un intervallo di A1: A7. Verranno modificate solo le celle nella prima colonna. Ho provato e funziona sulla mia macchina. Dovrebbe fare A1 = 1, A2 = 2, A3 = 3, ecc. Se vuoi colonne, allora hai bisogno di intervallo ('A1: G1') – ecline6

+0

Errore mio, l'ho modificato per i dati da inserire in colonne invece di filari. Devo fare altre regolazioni? – ecollis6

2

Assumendo una tabella con una riga di intestazione, come segue:

Name | Weight 
------+------- 
Apple | 56 
Pear | 23 
Leaf | 88 

Poi, il seguente dovrebbe essere autoesplicativo

cell_list = [] 

# get the headers from row #1 
headers = worksheet.row_values(1) 
# find the column "Weight", we will remember this column # 
colToUpdate = headers.index('Weight') 

# task 1 of 2 
cellLookup = worksheet.find('Leaf') 
# get the cell to be updated 
cellToUpdate = worksheet.cell(cellLookup.row, colToUpdate) 
# update the cell's value 
cellToUpdate.value = 77 
# put it in the queue 
cell_list.append(cellToUpdate) 

# task 2 of 2 
cellLookup = worksheet.find('Pear') 
# get the cell to be updated 
cellToUpdate = worksheet.cell(cellLookup.row, colToUpdate) 
# update the cell's value 
cellToUpdate.value = 28 
# put it in the queue 
cell_list.append(cellToUpdate) 

# now, do it 
worksheet.update_cells(cell_list) 
Problemi correlati