UPDATE:
ตามที่เขียนไว้ในคำตอบ นี้
Logger.log
จะส่งอีเมลถึงคุณ (ในที่สุด) เกี่ยวกับข้อผิดพลาดที่เกิดขึ้นในสคริปต์ของคุณหรือหากคุณกำลังเรียกใช้สิ่งต่างๆจากส่วนScript Editor
นี้คุณสามารถดูบันทึกจากฟังก์ชันที่เรียกใช้ล่าสุดได้โดยไปที่View->Logs
(ยังอยู่ในโปรแกรมแก้ไขสคริปต์) อีกครั้งนั่นจะแสดงเฉพาะสิ่งที่บันทึกจากฟังก์ชันสุดท้ายที่คุณเรียกใช้จากภายในScript Editor
เท่านั้น
สคริปต์ที่ฉันพยายามจะใช้งานต้องทำกับสเปรดชีต - ฉันสร้างรายการสิ่งที่ต้องทำ - รายการตรวจสอบสเปรดชีตที่จัดเรียงรายการตามลำดับความสำคัญและอื่น ๆ
ทริกเกอร์เดียวที่ฉันติดตั้งสำหรับสคริปต์นั้นคือทริกเกอร์ onOpen และ onEdit การดีบักทริกเกอร์ onEdit เป็นวิธีที่ยากที่สุดที่จะคิดออกเพราะฉันคิดอยู่เสมอว่าถ้าฉันตั้งเบรกพอยต์ในฟังก์ชัน onEdit เปิดสเปรดชีตแก้ไขเซลล์ที่เบรกพอยต์ของฉันจะถูกทริกเกอร์ กรณีนี้ไม่ได้.
เพื่อจำลองที่มีการแก้ไขเซลล์ผมไม่สิ้นสุดมีการทำอะไรบางอย่างในสเปรดชีตที่เกิดขึ้นจริง แต่ ทั้งหมดที่ผมทำก็คือให้แน่ใจว่าเซลล์ที่ฉันอยากให้มันรักษาเป็น "แก้ไข" ได้รับเลือกแล้วผมจะไปScript Editor
Run->onEdit
จากนั้นเบรกพอยต์ของฉันจะถูกกระแทก
แต่ผมไม่ต้องหยุดการใช้โต้แย้งกรณีที่ได้รับการผ่านเข้าสู่ฟังก์ชั่น onEdit - Run->onEdit
คุณไม่สามารถจำลองว่าการดำเนินการ ข้อมูลใด ๆ ที่ฉันต้องการจากสเปรดชีตเช่นเซลล์ใดถูกเลือก ฯลฯ ฉันต้องหาข้อมูลด้วยตนเอง
ยังไงก็ตามคำตอบยาว ๆ แต่ในที่สุดฉันก็คิดออก
แก้ไข :
หากคุณต้องการดูรายการตรวจสอบสิ่งที่ต้องทำที่ฉันทำคุณสามารถตรวจสอบได้ที่นี่
(ใช่ฉันรู้ว่าใคร ๆ ก็แก้ไขได้ - นั่นคือประเด็นของการแบ่งปัน!)
ฉันหวังว่ามันจะให้คุณเห็นสคริปต์ด้วย เนื่องจากคุณมองไม่เห็นที่นั่นนี่คือ:
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();
};