CẬP NHẬT:
Như được viết trong câu trả lời này ,
Logger.log
sẽ gửi cho bạn một email (cuối cùng) các lỗi đã xảy ra trong tập lệnh của bạn hoặc, nếu bạn đang chạy mọi thứ từ Script Editor
, bạn có thể xem nhật ký từ chức năng chạy cuối cùng bằng cách đi tới View->Logs
(vẫn trong trình chỉnh sửa tập lệnh). Một lần nữa, điều đó sẽ chỉ cho bạn thấy bất cứ điều gì đã được ghi lại từ chức năng cuối cùng bạn chạy từ bên trongScript Editor
.
Kịch bản tôi đang cố gắng để làm việc phải thực hiện với bảng tính - Tôi đã tạo một loại bảng liệt kê danh sách kiểm tra việc sắp xếp các mục theo thứ tự ưu tiên và như vậy.
Các kích hoạt duy nhất tôi đã cài đặt cho tập lệnh đó là các kích hoạt onOpen và onEdit. Gỡ lỗi trình kích hoạt onEdit là cách khó nhất để tìm ra, bởi vì tôi cứ nghĩ rằng nếu tôi đặt điểm dừng trong hàm onEdit, hãy mở bảng tính, chỉnh sửa một ô, rằng điểm dừng của tôi sẽ được kích hoạt. Đây không phải là trường hợp.
Để mô phỏng việc chỉnh sửa một ô, cuối cùng tôi đã phải làm một cái gì đó trong bảng tính thực tế. Tất cả những gì tôi đã làm là đảm bảo ô mà tôi muốn nó coi là "đã chỉnh sửa" đã được chọn, sau đó Script Editor
, tôi sẽ đi đếnRun->onEdit
. Sau đó, điểm dừng của tôi sẽ được nhấn.
Tuy nhiên, tôi đã phải ngừng sử dụng đối số sự kiện được truyền vào hàm onEdit - bạn không thể mô phỏng điều đó bằng cách thực hiện Run->onEdit
. Bất kỳ thông tin nào tôi cần từ bảng tính, như ô nào được chọn, v.v., tôi phải tìm ra bằng tay.
Dù sao, câu trả lời dài, nhưng cuối cùng tôi đã tìm ra nó.
BIÊN TẬP :
Nếu bạn muốn xem danh sách kiểm tra việc cần làm tôi đã thực hiện, bạn có thể xem tại đây
(vâng, tôi biết bất cứ ai cũng có thể chỉnh sửa nó - đó là điểm chia sẻ nó!)
Tôi đã hy vọng nó sẽ cho bạn xem kịch bản là tốt. Vì bạn không thể nhìn thấy nó ở đó, đây là:
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();
};