UPDATE:
正如所写this回答,
Logger.log
会向您发送一封电子邮件(最终),说明您的脚本中发生的错误,或者,如果您正在从Script Editor
,您可以通过以下方式查看上次运行函数的日志View->Logs
(仍在脚本编辑器中)。同样,这只会显示您上次运行的函数记录的任何内容从内部Script Editor
.
我试图使用的脚本与电子表格有关 - 我制作了一个电子表格待办事项清单类型的东西,可以按优先级等对项目进行排序。
我为该脚本安装的唯一触发器是 onOpen 和 onEdit 触发器。调试 onEdit 触发器是最难弄清楚的,因为我一直在想,如果我在 onEdit 函数中设置断点,打开电子表格,编辑单元格,我的断点就会被触发。不是这种情况。
为了模拟编辑单元格,我did但最终不得不在实际的电子表格中做一些事情。我所做的就是确保选择了我希望其视为“已编辑”的单元格,然后在Script Editor
, 我会去Run->onEdit
。然后我的断点就会被命中。
但是,我确实必须停止使用传递到 onEdit 函数的事件参数 - 你不能通过这样做来模拟它Run->onEdit
。我需要从电子表格中获得的任何信息,例如选择了哪个单元格等,我都必须手动计算出来。
无论如何,答案很长,但我最终想通了。
EDIT:
如果您想查看我制作的待办事项清单,您可以在这里查看
(是的,我知道任何人都可以编辑它 - 这就是分享它的意义!)
我希望它也能让你看到剧本。因为你在那里看不到它,所以它在这里:
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();
};