Home Foros Foro dudas Foro de JavaScript Ayuda con código Googlescript

Ayuda con código Googlescript

Viendo 1 entrada (de un total de 1)
  • Autor
    Entradas
  • #14987

    Juan Serena Muriel
    Participante

    Hola a todos y gracias de antemano,

    Estoy realizando una app la cual me lleve datos a spreadsheet y estos puedan ser modificados mediante la orden UPDATE

    Me estoy volviendo loco porque no domino código y no consigo los objetivos.

    Tengo un documento googlesheet funcionando a través de un formulario.

    Quiero conseguir que cuando reciba la acción UPDATE, si la columna Nombre y la columna Fecha obtienen los mismos valores, sustituya los datos de la fila en los que coinciden.

    Pero que solo suceda en ese caso, es decir que si recibe la orden update y los valores de la columna Nombre y los valores de la columna Fecha no coinciden, me cree una nueva fila con los nuevos datos, sin más.

    Mi idea es generar una app de reservas para mi negocio pero no consigo dar con el código. He encontrado en internet un código que se asemeja a lo que busco, pero me borra las citas de otros clientes y por mas que intento modificar y buscar información no lo consigo. Estoy seguro que me faltan variables y mucho mas pero no consigo que me funcione como os describo.

    Os dejo el código que encontré y que estoy utilizando para daros mas info y facilitar la ayuda.

     

    Un saludo y muchas gracias.

     

    function action(e) {
    var key = e.values[1]; // the entered name, column 2
    var action = e.values[4]; // the entered action (UPDATE or DELETE), column 5
    var sheet = SpreadsheetApp.getActiveSheet();
    var values = sheet.getDataRange().getValues();
    Logger.clear();
    Logger.log(‘action=’ + action);

    if (action == «DELETE»){
    del(key, sheet, values);
    }
    if (action == «UPDATE») {
    //upd(key, sheet, values);
    upd2(key, 1, sheet, values);
    }
    }

    function del(key, sheet, values){
    Logger.log(‘DELETE ‘ + key);
    // http://stackoverflow.com/a/13410486/1545993
    for(var row = values.length -1; row >= 0; –row){
    if (values[row][1] == key){
    sheet.deleteRow(parseInt(row)+1); // loop is 0-indexed, deleteRow is 1-indexed
    }
    } // end: for
    }

    // Version 1, deprecated
    function upd(key, sheet, values){
    var lastRow = sheet.getLastRow();
    for(i in values){
    if (values[i][1] == key){
    Logger.log(‘UPDATE i=’ + i);
    var rangeToCopy = sheet.getRange(lastRow, 1, 1, 4); // getRange(row, column, numRows, numColumns), do not copy action column
    rangeToCopy.copyTo(sheet.getRange(parseInt(i)+1, 1));
    }
    } // end: for
    sheet.deleteRow(lastRow); // delete last row: this is the update statement
    }

    // Version 2, author: Charles
    function upd2(key, key_column, sheet, values){
    var lastRow = values.length – 1;

    // Remove ‘UPDATE’ from column 5 (ACTION column)
    sheet.getRange(parseInt(lastRow)+1, 5).clear();

    // Remove entries with same key.
    for(var row = lastRow – 1; row >= 0; –row){
    if (values[row][key_column] == key){
    sheet.deleteRow(parseInt(row)+1); // loop is 0-indexed, deleteRow is 1-indexed
    }
    } // end: for
    }

Viendo 1 entrada (de un total de 1)
  • Debes estar registrado para responder a este debate.

Píldoras Informáticas

Comencé esta aventura para dar soporte a mis alumnos presenciales. Con el apoyo de todos los que me seguís mi canal de YouTube y esta web han crecido mucho más de lo que yo esperaba. Gracias a todos por estar ahí.

Quién está aquí ahora

Foto del perfil de Andrés
Foto del perfil de Jesus
Foto del perfil de yoli
Foto del perfil de Ernesto Mejías
Foto del perfil de José Manuel Acevo García
Foto del perfil de Antonio Oscar