अपडेट करें:
जैसा कि इस उत्तर में लिखा गया है ,
Logger.log
या तो आपको त्रुटियों का एक ईमेल (अंततः) भेज देगा जो आपकी लिपियों में हुआ है, या, यदि आप चीजों को चला रहे हैं, तो आप Script Editor
अंतिम रन फ़ंक्शन से लॉग को View->Logs
(अभी भी स्क्रिप्ट संपादक में) जाकर देख सकते हैं । फिर, यह आपको केवल कुछ भी दिखाएगा जो आपके द्वारा अंदर सेScript Editor
चलाए गए अंतिम फ़ंक्शन से लॉग किया गया था ।
जो स्क्रिप्ट मैं काम करने की कोशिश कर रहा था, उसका स्प्रेडशीट के साथ क्या करना था - मैंने स्प्रेडशीट को टूडू-चेकलिस्ट प्रकार की चीज़ बना दिया, जो प्राथमिकताओं और इस तरह से आइटम सॉर्ट करता है।
उस स्क्रिप्ट के लिए मैंने जो एकमात्र ट्रिगर्स स्थापित किया था, वे थे ऑनऑन और ऑनएड ट्रिगर्स। ऑनएडिट ट्रिगर को डीबग करना सबसे कठिन था, क्योंकि मैं सोचता रहा कि अगर मैंने अपने ऑनडाइट फ़ंक्शन में एक ब्रेकपॉइंट सेट किया, तो स्प्रेडशीट खोली, एक सेल को संपादित किया, जिससे मेरा ब्रेकपाइंट ट्रिगर हो जाएगा। यह मामला नहीं है।
एक सेल को संपादित करने के लिए अनुकरण करने के लिए, मैंने हालांकि वास्तविक स्प्रेडशीट में कुछ करने के लिए समाप्त किया । मैंने जो कुछ किया, वह यह सुनिश्चित करने के लिए किया गया था कि जिस सेल को मैं "एडिटेड" के रूप में मानता हूं, उसे चुना गया था, फिर अंदरScript Editor
, मैं करने के लिए जाना होगा Run->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();
};