es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Google Apps Script – Cambiando valores en un rango de celdas de hojas de cálculo de Google

En el siguiente ejemplo, uso Apps Script para programar eventos del calendario de Google en función de la entrada de una hoja de cálculo. Este código funciona perfectamente, sin embargo, necesito ajustarlo para realizar una pequeña manipulación en la hoja de origen también.
Aquí puedes ver que filtro el rango para incluir solo las filas que tienen el valor “Pending” en la columna D (r[3]). Sin embargo, necesito incluir una línea de código en el bucle para que después de sincronizar las filas filtradas con mi calendario de Google, el mismo valor de la celda en la columna D cambie a “Scheduled” para la celda respectiva. He intentado seguir esta solución, pero no pude implementarla ya que soy nuevo en JS.

https://stackoverflow.com/questions/22496610/google-apps-script-setvalue-in-cell-based-on-for-loop-matching

“`javascript
function calendarSync() {
var ss = SpreadsheetApp.getActiveSheet();
var calendarId = "Mi ID de calendario";
var eventCal = CalendarApp.getCalendarById(calendarId);
var eventArray = ss.getRange('A2:I500').getValues().filter(r => r[3] == "Pending Schedule");

for (x=0; x<eventarray.length; x++) {
var event = eventarray[x];
var eventname = event[0];
var starttime = event[1];
var endtime = event[2];

<pre><code>var exisevents = eventcal.getevents(starttime, endtime, {search: eventname}) //previene la creación de eventos duplicados;
if (exisevents.length == 0) {
eventcal.createevent(eventname, starttime, endtime);
}
</code></pre>

}
}
“` x++)=”” {=”” var=”” event=”eventArray[x];” var=”” eventname=”event[0];” var=”” starttime=”event[1];” var=”” endtime=”event[2];” var=”” exisevents=”eventCal.getEvents(startTime,” endtime,=”” {search:=”” eventname})=”” previene=”” la=”” creación=”” de=”” eventos=”” duplicados;=”” if=”” (exisevents.length=”=” 0)=”” {=”” eventcal.createevent(eventname,=”” starttime,=”” endtime);=”” }=”” }=”” }=””></eventarray.length; x++) {
var event = eventarray[x];
var eventname = event[0];
var starttime = event[1];
var endtime = event[2];

var exisevents = eventcal.getevents(starttime, endtime, {search: eventname}) //previene la creación de eventos duplicados;
if (exisevents.length == 0) {
  eventcal.createevent(eventname, starttime, endtime);
}

}
}
“`>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el valor de la celda respectiva en la columna D a “Programado” después de que las filas filtradas se sincronicen con el Calendario de Google, puedes agregar la siguiente línea de código dentro del bucle for:

    ss.getRange(x+2, 4).setValue("Programado"); // asumiendo que la columna D es la cuarta columna
    

    Este código establecerá el valor de la celda en la columna D (cuarta columna) en “Programado” para la fila respectiva que se sincronizó con el Calendario de Google. El valor x+2 representa el número de fila en la hoja de cálculo, ya que el bucle comienza en 0 y los datos comienzan en la fila 2 (de ahí la adición de +2).

Comments are closed.