GÜNCELLEME:
Bu cevapta yazıldığı gibi ,
Logger.log
ya size komut dosyalarınızda meydana gelen hataların bir e-postasını (en sonunda) gönderir ya da bir şeyler Script Editor
çalıştırıyorsanız, son çalıştırılan işlevin günlüğünü View->Logs
(hala komut dosyası düzenleyicide) seçeneğine giderek görüntüleyebilirsiniz . Yine, bu size yalnızca içeridenScript Editor
çalıştırdığınız son işlevden kaydedilen her şeyi gösterecektir .
Çalışmaya çalıştığım komut dosyası elektronik tablolarla ilgiliydi - öğeleri önceliklere ve benzerlerine göre sıralayan bir elektronik tablo yapılacaklar listesi türü bir şey yaptım.
Bu komut dosyası için yüklediğim tek tetikleyiciler onOpen ve onEdit tetikleyicileriydi. OnEdit tetikleyicisinin hatalarını ayıklamak, anlaşılması en zor olanıydı, çünkü onEdit işlevimde bir kesme noktası belirlersem, elektronik tabloyu açarsam, bir hücreyi düzenlersem, kesme noktamın tetikleneceğini düşünmeye devam ettim. Olay bu değil.
Bir hücreyi düzenlenebilir olan simüle etmek için, ben yaptım gerçi gerçek elektronik tabloda bir şey yapmak zorunda sonunda. Tek yaptığım, onu "düzenlenmiş" olarak değerlendirmesini istediğim hücrenin seçildiğinden emin olmaktı, sonra Script Editor
içeri girecektim Run->onEdit
. O zaman kesme noktam vurulacak.
Ancak, onEdit işlevine aktarılan olay bağımsız değişkenini kullanmayı bırakmak zorunda kaldım - bunu yaparak bunu simüle edemezsiniz Run->onEdit
. Elektronik tablodan ihtiyacım olan herhangi bir bilgi, örneğin hangi hücrenin seçildiği vb. Manuel olarak çözmem gerekiyordu.
Her neyse, uzun cevap, ama sonunda anladım.
DÜZENLEME :
Yaptığım yapılacaklar listesini görmek isterseniz buradan kontrol edebilirsiniz.
(evet, herkesin düzenleyebileceğini biliyorum - paylaşmanın amacı bu!)
Senaryoyu da görmene izin vereceğini umuyordum. Orada göremediğiniz için, işte burada:
function onOpen() {
setCheckboxes();
};
function setCheckboxes() {
var checklist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("checklist");
var checklist_data_range = checklist.getDataRange();
var checklist_num_rows = checklist_data_range.getNumRows();
Logger.log("checklist num rows: " + checklist_num_rows);
var coredata = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("core_data");
var coredata_data_range = coredata.getDataRange();
for(var i = 0 ; i < checklist_num_rows-1; i++) {
var split = checklist_data_range.getCell(i+2, 3).getValue().split(" || ");
var item_id = split[split.length - 1];
if(item_id != "") {
item_id = parseInt(item_id);
Logger.log("setting value at ("+(i+2)+",2) to " + coredata_data_range.getCell(item_id+1, 3).getValue());
checklist_data_range.getCell(i+2,2).setValue(coredata_data_range.getCell(item_id+1, 3).getValue());
}
}
}
function onEdit() {
Logger.log("TESTING TESTING ON EDIT");
var active_sheet = SpreadsheetApp.getActiveSheet();
if(active_sheet.getName() == "checklist") {
var active_range = SpreadsheetApp.getActiveSheet().getActiveRange();
Logger.log("active_range: " + active_range);
Logger.log("active range col: " + active_range.getColumn() + "active range row: " + active_range.getRow());
Logger.log("active_range.value: " + active_range.getCell(1, 1).getValue());
Logger.log("active_range. colidx: " + active_range.getColumnIndex());
if(active_range.getCell(1,1).getValue() == "?" || active_range.getCell(1,1).getValue() == "?") {
Logger.log("made it!");
var next_cell = active_sheet.getRange(active_range.getRow(), active_range.getColumn()+1, 1, 1).getCell(1,1);
var val = next_cell.getValue();
Logger.log("val: " + val);
var splits = val.split(" || ");
var item_id = splits[splits.length-1];
Logger.log("item_id: " + item_id);
var core_data = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("core_data");
var sheet_data_range = core_data.getDataRange();
var num_rows = sheet_data_range.getNumRows();
var sheet_values = sheet_data_range.getValues();
Logger.log("num_rows: " + num_rows);
for(var i = 0; i < num_rows; i++) {
Logger.log("sheet_values[" + (i) + "][" + (8) + "] = " + sheet_values[i][8]);
if(sheet_values[i][8] == item_id) {
Logger.log("found it! tyring to set it...");
sheet_data_range.getCell(i+1, 2+1).setValue(active_range.getCell(1,1).getValue());
}
}
}
}
setCheckboxes();
};