Hola, tengo un inconveniente al querer automatizar una hoja de calculo:
Mi hoja de calculo es un seguimiento de trabajos, en donde se pone una fecha de vencimiento de dicho trabajo y pasando columna por columna se va asentando en que estado está el trabajo. Una vez que el trabajo se termina de hacer, se obtiene la fecha del dia en que se terminó y a esta se le se debe sumar un año para actualizar la primer fecha de vencimiento mencionada, (solo los valores) y las celdas que han sido tickeadas en el seguimiento, se deben destickear. Ya logré realizar dicha tabla, grabar la macro y asignársela a un botón. Pero yo necesito que esta macro se realice en toda la hoja de calculo y no es practico agregar botón por botón y asignarle una macro. Quisiera saber como hacer para que la macro se active solo cuando una celda es distinta de vacío o alguna forma que me permita crear infinitos botones en una columna y se le asigne la macro respectivamente. Acá dejo como hice las macros para 3 filas en las que la macro realiza lo que yo quiero pero necesitaría hacer muchas macros así. (UNO y TRES las hice con referencias absolutas y CUATRO con referencias relativas solo para probar, todas las macros deberían ser iguales):
function UNO() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('C5').activate();
spreadsheet.getRange('O5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('F5').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('H5').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('J5').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('L5').activate();
spreadsheet.getCurrentCell().setValue('NO');
};
function TRES() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('C7').activate();
spreadsheet.getRange('O7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('F7').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('H7').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('J7').activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getRange('L7').activate();
spreadsheet.getCurrentCell().setValue('NO');
};
function CUATRO() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().offset(0, -13).activate();
spreadsheet.getCurrentCell().offset(0, 12).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getCurrentCell().offset(0, 3).activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getCurrentCell().offset(0, 2).activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getCurrentCell().offset(0, 2).activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getCurrentCell().offset(0, 2).activate();
spreadsheet.getCurrentCell().setValue('NO');
spreadsheet.getCurrentCell().offset(0, -9).activate();
};
Si alguien me puede ayudar se los agradecería demasiado. Un saludo