Muchas macros

218 views
Skip to first unread message

Julian Milanovic

unread,
Oct 31, 2019, 8:44:56 PM10/31/19
to Google Ads Scripts Forum
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

Google Ads Scripts Forum Advisor

unread,
Nov 1, 2019, 11:31:29 AM11/1/19
to adwords-scripts+apn2wqepb4h48z4h...@googlegroups.com, adwords-scripts+apn2wqepb4h48z4h...@googlegroups.co, adwords...@googlegroups.com

Hello Julian,

Since your script and question mostly deals with SpreadsheetApp rather than Google Ads Scripts, I'd recommend reaching over to to the Apps Script Team as they are better able to assist you with this.
 

Regards,
Anthony
Google Ads Scripts Team



ref:_00D1U1174p._5001UMuUFh:ref
Reply all
Reply to author
Forward
0 new messages