7

Il foglio dipendente contiene il nome del dipendente nella cella C2. Il nome del dipendente deve essere incluso nella scheda tecnica nell'intervallo B3: B153.Trova valore di corrispondenza cella e reso numero limite

Come posso ottenere il numero di riferimento della cella sul foglio dati corrispondente al nome del dipendente?

Ho provato il seguente script ma non sembra funzionare.

var Sheet = SpreadsheetApp.getActive(); 
    var Employeesheet = Sheet.getSheetByName('Employee') 
    var DataSheet = Sheet.getSheetByName('Data'); 
    var Column = Sheet.getRange(3,2,151,1); 
    var Values = column.getValues(); 
    var Row = 0; 

    while (Values[Row] && Values[Row][0] !=(EmployeeSheet.getRange(2,3,1,1).getValue())) { 
    Row++; 
    } 

    if (Values[Row][0] === (EmployeeSheet.getRange(2,3,1,1).getValue())) 
    return Row+1; 
    else 
    return -1; 

    } 

risposta

6

Ecco il codice

function rowOfEmployee(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var employeeName = sheet.getRange("C2").getValue(); 
    for(var i = 0; i<data.length;i++){ 
    if(data[i][1] == employeeName){ //[1] because column B 
     Logger.log((i+1)) 
     return i+1; 
    } 
    } 
} 

Quando si desidera eseguire questo tipo di occhiata è meglio recuperare i dati con sheet.getDataRange(). GetValues ​​() perché in questo caso si otterrà i dati come una tabella di valori, questo è più veloce. Quando si utilizza lo standard EmployeeSheet.getRange (2,3,1,1) .getValue(), infatti, si recupera un oggetto che richiede più tempo per essere elaborato e ogni volta che si interroga il foglio di calcolo.

Nel mio esempio ho creato una sola query per recuperare tutti i dati anziché n query per recuperare un dato ogni volta.

Stéphane

+0

Ricevo un errore: Errortipo: impossibile leggere l'attributo "1" da non definito. Sai come posso risolverlo? Lo script – LennartB

+0

deve essere avviato da uno script all'interno di uno spreadsheet e non in uno script autonomo. Se lo script standalone cambia var sheet = SpreadsheetApp.openById ("IDofSpreadsheet"); – St3ph

+0

sorry var sheet = SpreadsheetApp.openById ("IDofSpreadsheet"). GetSheetByName ("NameOfTheSheet"); – St3ph