UPDATE :
Comme écrit dans cette répondre,
Logger.log
vous enverra un email (éventuellement) des erreurs qui se sont produites dans vos scripts, ou, si vous exécutez les choses à partir de l'application Script Editor
Vous pouvez consulter le journal de la dernière exécution de la fonction en vous rendant à l'adresse suivante View->Logs
(toujours dans l'éditeur script). Encore une fois, cela ne vous montrera que ce qui a été enregistré à partir de la dernière fonction que vous avez exécutée de l'intérieur Script Editor
.
Le script que j'essayais de faire fonctionner avait un rapport avec les feuilles de calcul - j'ai créé une feuille de calcul de type todo-checklist qui trie les éléments par priorité et ainsi de suite.
Les seuls déclencheurs que j'ai installés pour ce script sont les déclencheurs onOpen et onEdit. Le débogage du déclencheur onEdit a été le plus difficile à comprendre, car je pensais que si je mettais un point d'arrêt dans ma fonction onEdit, que j'ouvrais la feuille de calcul, que je modifiais une cellule, mon point d'arrêt serait déclenché. Ce n'est pas le cas.
Pour simuler l'édition d'une cellule, je a fait Cependant, je finirai par devoir faire quelque chose dans la feuille de calcul proprement dite. Tout ce que j'ai fait, c'est de m'assurer que la cellule que je voulais qu'il traite comme "éditée" était sélectionnée, puis dans Script Editor
Je me rendrais à Run->onEdit
. Mon point d'arrêt serait alors atteint.
Cependant, j'ai dû arrêter d'utiliser l'argument de l'événement qui est passé dans la fonction onEdit - vous ne pouvez pas simuler cela en faisant Run->onEdit
. Toutes les informations dont j'avais besoin à partir de la feuille de calcul, comme la cellule sélectionnée, etc.
Quoi qu'il en soit, la réponse est longue, mais j'ai fini par comprendre.
EDIT :
Si vous souhaitez consulter la liste de contrôle que j'ai établie, vous pouvez le faire en cliquant sur le lien suivant à vérifier ici
(oui, je sais que tout le monde peut le modifier - c'est l'intérêt de le partager !)
J'espérais que cela vous permettrait de voir le script également. Puisque vous ne pouvez pas le voir, le voici :
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();
};