METTRE À JOUR:
Comme écrit dans cette réponse,
Logger.log
vous enverra un e-mail (éventuellement) des erreurs qui se sont produites dans vos scripts, ou, si vous exécutez des choses à partir de Script Editor
, vous pouvez afficher le journal de la dernière fonction exécutée en allant à View->Logs
(toujours dans l'éditeur de script). Encore une fois, cela ne vous montrera que tout ce qui a été enregistré à partir de la dernière fonction que vous avez exécutée de l'intérieurScript Editor
.
Le script que j'essayais de faire fonctionner avait à voir avec des feuilles de calcul - j'ai créé une feuille de calcul de type todo-checklist qui triait les éléments par priorités, etc.
Les seuls déclencheurs que j'ai installés pour ce script étaient les déclencheurs onOpen et onEdit. Le débogage du déclencheur onEdit était le plus difficile à comprendre, car je n'arrêtais pas de penser que si je définissais un point d'arrêt dans ma fonction onEdit, ouvrais la feuille de calcul, modifiais une cellule, mon point d'arrêt serait déclenché. Ce n'est pas le cas.
Pour simuler avoir édité une cellule, je ne finissent par avoir à faire quelque chose dans la feuille de calcul réelle cependant. Tout ce que j'ai fait était de m'assurer que la cellule que je voulais traiter comme "éditée" était sélectionnée, puis dans Script Editor
, j'irais Run->onEdit
. Ensuite, mon point d'arrêt serait atteint.
Cependant, j'ai dû arrêter d'utiliser l'argument d'é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 dans la feuille de calcul, comme la cellule sélectionnée, etc., je devais les déterminer manuellement.
Bref, longue réponse, mais je l'ai finalement compris.
MODIFIER :
Si vous voulez voir la liste de contrôle des tâches que j'ai créée, vous pouvez la consulter ici
(oui, je sais que n'importe qui peut le modifier - c'est le but de le partager!)
J'espérais que cela vous permettrait également de voir le script. Puisque vous ne pouvez pas le voir là-bas, 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();
};