2016-04-14 19 views
-1
function initializeData(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_view"); 

    var selectedCell = SpreadsheetApp.getActiveRange(); 
    var selectedMake = ss.getRange(2, 1).getValue(); 
    var selectedModel = ss.getRange(2, 2).getValue(); 
    var selectedYear = ss.getRange(2, 3).getValue(); 
    var selectedTrim = ss.getarange(2, 4).getvalue(); 
    var cars_raw =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_raw"); 
    // I think this is where I should be getting finale range or changing  selected row to variable 

    var trims = []; 
    var carData = getCarData(); 
    for (var i = 0; i < carData.length; i++) { 
    var row = carData[i]; 
    var make = row[0]; 
    var model = row[1]; 
    var year = row[2]; 
    var trim = row[3]; 
    var data = row[$];// this is not a drop down 
    if (trim == "") { 
     continue; 
    } 
    if (make == selectedMake && model == selectedModel && year == selectedYear && trim == selectedTrim /* && data.indexOf(data)== -1*/) { 
     data.push(data); 
    } 
    } 
    // in case of no trims available 
    if (!trims.length) trims = ['N/A']; 

} 




function onEdit() { 
    Logger.log("onEdit()"); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var selectedCell = SpreadsheetApp.getActiveRange(); 
    var cars_raw =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_raw"); 

    Logger.log("Hello."); 

    if (sheet.getName() != "cars_view") {// changed sheet 7 to cars_view 
    return; 
    } 

    var selectedRow = selectedCell.getRow(); 
    var selectedColumn = selectedCell.getColumn(); 
    Logger.log("selected row=%s, column=%s", selectedRow,  selectedColumn); 
    // Why does this below not start with 0 and go to 3; 
    if (selectedRow == 2.0) { 
    if (selectedColumn == 1.0) { 
     // make 
     initializeModels(); 
    } else if (selectedColumn == 2.0) { 
     // model 
     initializeYears(); 
    } else if (selectedColumn == 3.0) { 
     // year 
     initializeTrims(); 
    } else if (selectedColumn == 4.0) { 
     initializeData(); 

    } 
    } 
+0

https://docs.google.com/spreadsheets/d/13TorBfSBw8OtnWRKaF4hSVoCj28fIyd9roZORbyr7jU/edit#gid=896489113 –

+0

Ne istediğinizden emin değilim. Sürecin ne olduğunu tanımlamanız gerekecek. Başlangıç ​​noktası nedir? Beklenen sonuç nedir? –

+0

Arka plan sayfası cars_raw, cars_view'i doldurmak için bilgileri doldurduğumuz yerdir; cars_view üzerinde seçilen her araba marka, model, yıl, trim aşağı arabalar-ham tek bir sıraya kadar daraltır. İlk dört sütundan sonra seçim sütunlarını daraltmak için E'den EX'e, cars_view'i dolduracak bilgiler verilir. –

cevap

0

sadece cars_view tabakanın A6:D6 için cars_raw sayfasından değerleri Ex:Hx kopyalamanız gerekir. Ben de getCarData fonksiyon

değiştirmek zorunda

function onEdit(e) { 
    var source = e.source; 
    var sheet_name = source.getSheetName(); 
    var range = e.range; 
    var cars_raw = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_raw"); 

    if (sheet_name != "cars_view") { 
    return; 
    } 

    var selectedRow = range.getRow(); 
    var selectedColumn = range.getColumn(); 
    Logger.log("selected row=%s, column=%s", selectedRow, selectedColumn); 

    if (selectedColumn == 4 && selectedRow == 2) { 
    initializeData(); 
    } 
} 

aşağıdaki gibi setValues yöntem sınıf Range ait kullanabilmesi için

,

function initializeData(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_view"); 
    var selectedCell = SpreadsheetApp.getActiveRange(); 
    var selectedMake = ss.getRange(2, 1).getValue(); 
    var selectedModel = ss.getRange(2, 2).getValue(); 
    var selectedYear = ss.getRange(2, 3).getValue(); 
    var selectedTrim = ss.getRange(2, 4).getValue(); 
    var cars_raw = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_raw"); 

    var trims = []; 
    var carData = getCarData(); 
    for (var i = 0; i < carData.length; i++) { 
    var row = carData[i]; 
    var make = row[0]; 
    var model = row[1]; 
    var year = row[2]; 
    var trim = row[3]; 
    var data = row[4]; 
    var battery_info = row.slice(4); 
    if (trim == "") { 
     continue; 
    } 
    if (make === selectedMake && model === selectedModel && year === selectedYear && trim === selectedTrim) 
    { 
     var range = ss.getRange("A6:D6"); 
     range.setValues([battery_info]); 
     break; 
    } 
    } 
} 

Ben onEdit işlevini değiştirdik

function getCarData() { 
    var cars_raw = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("cars_raw"); 
    return cars_raw.getSheetValues(3, 1, 5000, 8); 
} 
+0

Tuhaf bir şey; A6 - D6, cars_view bilgisinden cars_view bilgisine günceller, ancak sadece script initializeData komutunu elle çalıştırdıktan sonra, daha sonra Trim'in son seçimini yaptığınızda. Bilgiyi tutarlı tutmak için battery_info'yu pil_size olarak değiştirdim. –

+0

@JoshuaEcvHaislip: Hata ayıklama için her şeyi kaldırdım ve yukarıdaki kodla sona erdi. Benim için mükemmel çalıştı. Lütfen bunu deneyin. Bu cevabı faydalı bulsaydınız, –

+0

cevabını kabul ediyorum Otomatik olarak yenilemek için bir satır ekledim, çünkü Döşeme çok fazla seçenek olmadığında güncellenmiyordu. –

İlgili konular