Tal vez no pueda explicarme mejor, pero haré mi mejor esfuerzo. Tengo dos columnas, digamos A y B, en la columna A hay fórmulas para que los valores en ellas cambien dependiendo de otras condiciones. Ahora lo que quiero en la columna B es pegar/ setvalue el valor por primera vez cada vez que aparece un valor en columna A, de modo que cuando haya más cambios en la columna A, no afectará el valor que se pega en la columna B. Aunque hice todo lo posible para escribir el script, pega el valor pero pega en todos la columna y no le importa si alguna celda en la columna A está vacía.
He investigado mucho pero no he podido encontrar una respuesta. Aunque OnEdit puede funcionar, pero como la columna de la que se obtiene el valor tiene fórmulas y OnEdit no funciona en fórmulas. Entonces, una vez que se corrige el guión, podemos activarlo para controlar el tiempo.
Solo necesito la ayuda para que esta función funcione correctamente, estaré muy agradecido por cualquier ayuda. gracias.
function pastevalue(){ var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1'); var lastrow = ss.getRange("A2:B").getValues().filter(String).length; var range = ss.getRange(2,1,lastrow); var pasterange = ss.getRange(2,2,lastrow); var values = range.getValues().filter(String); var pastevalues = pasterange.getValues(); for (i=0; i<values.length; i++){ if(pastevalues[i] == ""){ var value = pasterange.setValue(values[i]) } } }Supongo que su objetivo es tomar el valor numérico de una fórmula inmediatamente después de ingresarla, de modo que si el valor que se muestra en la celda de la fórmula cambia en el futuro, aún posee el valor original que arrojó la fórmula. El siguiente script logra eso:
function onEvent(e){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); if (e.range.getColumn() == 1 && typeof e.oldValue == 'undefined'){ sheet.getRange(e.range.getRow(), 2).setValue(e.range.getValue()); } }Tenga en cuenta que es un disparador de eventos, lo que significa que se ejecuta cada vez que se edita la hoja de cálculo. Como parámetro de la función, tomamos el evento que activó el script (puede leer cómo están estructurados aquí ), y luego verificamos dos condiciones que deben cumplirse para copiar el valor en la columna B: