tutorial sheets scripts script openbyurl macro google español ejemplos docs developer apps app google-apps-script google-spreadsheet

google-apps-script - sheets - google spreadsheet macro



Copie Celda de una hoja a otra si no es un duplicado basado en criterios en celdas múltiples (1)

Esta es una continuación de una publicación anterior, pero no pude encontrar la manera de agregarla a la publicación anterior. Aquí está el enlace a la publicación anterior. ¿Copia la Hoja de datos1 en la Hoja2 para que pueda ordenar y editar ambas hojas (secuencia de comandos de Google Apps?)

PARTE II Gracias a Daniel, tengo lo siguiente En la hoja 1 (Registro_del participante) hay un botón que cuando se empuja agrega una ID tanto a la hoja 1 como a la hoja 2 (Aprendizaje_Sesión_Atención). Luego usamos la función vlookup para transferir columnas BD de la hoja 1 a la hoja 2 Escribí mi propia secuencia de comandos para agregar instrucciones a los participantes.

Ahora aquí es con lo que necesito ayuda ahora. Pequeño arreglo al guión original El guión, aunque es fantástico, comienza a numerar los ID en 2 en lugar de en 1. ¿Hay alguna manera de arreglar esto?

Nueva secuencia de comandos En la hoja 1 (Participant_Registration) si las columnas L, M o N tienen un valor = "Grupo1", me gustaría que la ID (en la columna A) se transfiera a la hoja 3 (Consulta1_Atención). Si L, M o N tienen un valor = "Grupo2", me gustaría que la ID (columna A) se transfiriera a la Hoja 4 (Consulta2_Atención).

Aquí están las consideraciones para el nuevo guión, que me han dificultado escribirlo. Durante el curso de una capacitación, las personas pueden cambiar de grupo, lo que significa que la función probablemente sea una función de edición y no pueda simplemente transferir la última fila. Necesita transferir la fila activa y solo transferirla al formulario de asistencia de consulta si la ID no está ya en ese formulario. Intenté con la fórmula de Consulta: no funciona porque no puede ordenar las filas en la hoja de asistencia de consulta y estamos agregando datos nuevos a esa hoja.

Nota: Eventualmente jugaré con este script para tener 10 posibles grupos de consulta. No estoy seguro de si hay una forma de automatizar la copia de la hoja Consulta1_Atención por el número de grupos y llenándolo con personas que están asignadas al grupo.

Aquí hay un enlace a la hoja. https://docs.google.com/spreadsheets/d/1cvKO2tPKeZdLWHc2XVfli8lYVylXCas4VgSG-wB_lLM/edit?usp=sharing

El código bajo code.gs se ejecuta. Mis intentos del código para esto están bajo ConsultGpAssign.gs (son intentos muy tristes). Solo estoy aprendiendo He estado probando todo tipo de cosas y realmente podría usar ayuda.

También pegué un intento que claramente no funciona aquí.

function onEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "Participant_Registration" && ((r.getColumn() == 12 && r.getValue() == "Group1") || (r.getColumn() == 13 && r.getValue() == "Group1") || (r.getColumn() == 14 && r.getValue() == "Group1"))) { var row = r.getRow(); //Not sure if this works //only want to transfer ID column A not sure how to do this var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Consultation1_Attendance"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it''s not already on sheet. Do not want to delete } }


Mirando esta línea:

s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it''s not already on sheet. Do not want to delete

El método moveTo() corta el rango. Pero su comentario indica que no desea eliminar. Cortar el rango lo eliminará. Ya tienes definido un rango objetivo. Use getValues() para obtener lo que quiere copiar:

var myValuesToCopy = s.getRange(row, 1, 1, numColumns).getValues(); target.setValues(myValuesToCopy);