MEMPERBARUI:
Seperti yang tertulis dalam jawaban ini ,
Logger.log
akan mengirimi Anda email (akhirnya) kesalahan yang terjadi dalam skrip Anda, atau, jika Anda menjalankan sesuatu dari Script Editor
, Anda dapat melihat log dari fungsi yang terakhir dijalankan dengan masuk ke View->Logs
(masih dalam editor skrip). Sekali lagi, itu hanya akan menunjukkan kepada Anda apa pun yang dicatat dari fungsi terakhir yang Anda jalankan dari dalamScript Editor
.
Skrip yang saya coba kerjakan berkaitan dengan spreadsheet - Saya membuat jenis spreadsheet todo-checklist yang mengurutkan item berdasarkan prioritas dan semacamnya.
Satu-satunya pemicu yang saya instal untuk skrip itu adalah pemicu onOpen dan onEdit. Melakukan debug pada pemicu onEdit adalah yang paling sulit untuk diketahui, karena saya terus berpikir bahwa jika saya menetapkan breakpoint pada fungsi onEdit saya, membuka spreadsheet, mengedit sel, bahwa breakpoint saya akan dipicu. Ini bukan kasusnya.
Untuk mensimulasikan setelah diedit sel, saya tidak akhirnya harus melakukan sesuatu dalam spreadsheet yang sebenarnya sekalipun. Yang saya lakukan hanyalah memastikan sel yang saya inginkan untuk diperlakukan sebagai "diedit" dipilih, lalu masuk Script Editor
, saya akan pergi ke Run->onEdit
. Maka breakpoint saya akan dipukul.
Namun, saya harus berhenti menggunakan argumen acara yang diteruskan ke fungsi onEdit - Anda tidak dapat mensimulasikannya dengan melakukan Run->onEdit
. Setiap info yang saya butuhkan dari spreadsheet, seperti sel mana yang dipilih, dll, saya harus mencari tahu secara manual.
Ngomong-ngomong, jawaban panjang, tapi akhirnya aku yang menemukannya.
EDIT :
Jika Anda ingin melihat daftar todo yang saya buat, Anda dapat memeriksanya di sini
(ya, saya tahu siapa pun dapat mengeditnya - itulah gunanya membagikannya!)
Saya berharap itu akan membiarkan Anda melihat skrip juga. Karena Anda tidak dapat melihatnya di sana, ini dia:
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();
};