Google Apps Script (Hojas de cálculo) – seleccionar una matriz en una hoja de cálculo basándose en una condición en las celdas.
Estoy intentando seleccionar un array de hojas de cálculo de Google para crear eventos en el calendario de Google basados en eso. El fragmento de código a continuación funciona bien y cumple con su función. Pero quiero poder seleccionar solo el rango que tenga el valor “select” en su columna D.
Sé que probablemente sea una respuesta muy sencilla, pero soy nuevo en JS.
“`
function calendarSync() {
var spreadSheet = SpreadsheetApp.getActiveSheet;
var eventCal = CalendarApp.getCalendarById(calendarId);
// En lugar de seleccionar el rango completo, solo necesito las filas que tengan el valor "select" en su celda D.
var eventArray = spreadSheet.getRange("A1:D100").getValues();
}
for (x=0; x<eventmatrix.length; x++){
var calevent = eventarray[x];
var eventname = calevent[0];
var starttime = calevent[1];
var endtime = calevent[2];
eventcal.createevent(eventname, starttime, endtime);
}
“` x++){=”” var=”” calevent=”eventArray[x];” var=”” eventname=”calEvent[0];” var=”” starttime=”calEvent[1];” var=”” endtime=”calEvent[2];” eventcal.createevent(eventname,=”” starttime,=”” endtime);=”” }=””></eventmatrix.length; x++){
var calevent = eventarray[x];
var eventname = calevent[0];
var starttime = calevent[1];
var endtime = calevent[2];
eventcal.createevent(eventname, starttime, endtime);
}
“`>
davy.ai
Para seleccionar solo el rango que tenga un valor “select” en su columna D, puedes modificar la línea donde se define
eventArray
. En lugar de proporcionar el rango “A1:D100”, puedes usar el métodocreateTextFinder
para encontrar todas las celdas con el valor “select” en la columna D, y luego usargetA1Notation
para obtener la cadena de rango de todas las celdas coincidentes. Aquí está el código modificado:este código utiliza
createtextfinder
para encontrar todas las celdas en la hoja activa que tienen el valor “select” (distingue entre mayúsculas y minúsculas y solo coincide con celdas completas) y devuelve un objetorangelist
. luego, realiza un mapeo sobre cada celda de la lista y obtiene el rango de las columnas a a d para esa fila y convierte cada rango en una cadena de notación a1. finalmente, pasa el array de cadenas de rango agetrangelist
para crear un nuevo objetorangelist
y recupera los valores de esos rangos. el resto del código sigue siendo el mismo. x++){=”” var=”” calevent=”eventArray[x];” var=”” eventname=”calEvent[0];” var=”” starttime=”calEvent[1];” var=”” endtime=”calEvent[2];” eventcal.createevent(eventname,=”” starttime,=”” endtime);=”” }=”” }=”” “`=”” este=”” código=”” utiliza=””createtextfinder
=”” para=”” encontrar=”” todas=”” las=”” celdas=”” en=”” la=”” hoja=”” activa=”” que=”” tienen=”” el=”” valor=”” “select”=”” (distingue=”” entre=”” mayúsculas=”” y=”” minúsculas=”” y=”” solo=”” coincide=”” con=”” celdas=”” completas)=”” y=”” devuelve=”” un=”” objeto=””rangelist
.=”” luego,=”” realiza=”” un=”” mapeo=”” sobre=”” cada=”” celda=”” de=”” la=”” lista=”” y=”” obtiene=”” el=”” rango=”” de=”” las=”” columnas=”” a=”” a=”” d=”” para=”” esa=”” fila=”” y=”” convierte=”” cada=”” rango=”” en=”” una=”” cadena=”” de=”” notación=”” a1.=”” finalmente,=”” pasa=”” el=”” array=”” de=”” cadenas=”” de=”” rango=”” a=””getrangelist
=”” para=”” crear=”” un=”” nuevo=”” objeto=””rangelist
=”” y=”” recupera=”” los=”” valores=”” de=”” esos=”” rangos.=”” el=”” resto=”” del=”” código=”” sigue=”” siendo=”” el=””></eventarray.length; x++){var calevent = eventarray[x];
var eventname = calevent[0];
var starttime = calevent[1];
var endtime = calevent[2];
}
“`
este código utiliza
createtextfinder
para encontrar todas las celdas en la hoja activa que tienen el valor “select” (distingue entre mayúsculas y minúsculas y solo coincide con celdas completas) y devuelve un objetorangelist
. luego, realiza un mapeo sobre cada celda de la lista y obtiene el rango de las columnas a a d para esa fila y convierte cada rango en una cadena de notación a1. finalmente, pasa el array de cadenas de rango agetrangelist
para crear un nuevo objetorangelist
y recupera los valores de esos rangos. el resto del código sigue siendo el mismo.>