2015-07-03 15 views
10

Ho diversi fogli Google che collego e aggiorno le celle tra di loro. In questo momento devo usare i riferimenti di tipo R1C1 o A1 per definire ottenere o impostare celle basate su colonne specifiche.Come utilizzare un'intestazione di colonna per fare riferimento a una cella in Google Apps Script Spreadsheet

Se viene aggiunta una nuova colonna, tutti i riferimenti sono ora disattivati.

Nella prima riga di ogni foglio sono presenti le intestazioni di colonna come valori in quelle celle.

Posso fare riferimento a una cella in un formato come [columnHeader] 5 per la cella in quella colonna, quinta riga?

Ho pensato di impostare ogni singola intestazione di colonna come "intervallo denominato", ma sono bloccato a poter fare riferimento a una cella utilizzando [intervallo denominato] 5.

Suppongo che potrei utilizzare un metodo per definire dinamicamente 100 variabili al formato di numeri di colonna (R1C1) corrente (in tutti i fogli) e quindi provare a utilizzare quelle variabili di pseudo-intestazione nei riferimenti di cella. Ma probabilmente eseguirò gli script 100 volte al giorno e quell'orribile inefficienza fa male all'ingegnere.

Grazie in anticipo.

mandrino

risposta

12

Io uso una piccola funzione di supporto che restituisce l'indice colonna come un numero che posso utilizzare in getRange(row,col)

E 'molto semplice e va in questo modo:

function getColByName(name){ 
    var headers = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange().getValues().shift(); 
    var colindex = headers.indexOf(name); 
    return colindex+1; 
} 

prova così:

function testgetColByName(){ 
    Logger.log(getColByName('header string')); 
} 
+0

Grazie Serge, l'ho modificato per gestire il numero di colonne da moltiplicare le schede passando l'appropriato "getSheetByName" e l'intestazione della colonna specifica. – user1489765

+0

Scusa, colpisci CR troppo presto. Volevo aggiungere che lo accetto come risposta. Mentre potrebbe non essere il migliore (niente contro Serge) funziona per me. Grazie ancora a Serge. – user1489765

+3

Ahhh, Serge; Non riuscivo a capire perché hai scelto l'intera gamma e usato shift(). Poi ho finalmente trovato un riferimento a "Il metodo shift() rimuove il primo elemento di un array e restituisce quell'elemento." Ottimo lavoro! Stavo seguendo il percorso di restrizione dell'intervallo solo alla riga superiore (volevo davvero solo le intestazioni); ma il tuo metodo lo ha gestito. Tanto di cappello a te! – user1489765

Problemi correlati