usar trucos sheets sheet importrange hoja google funcion formato condicional como calculo buscarv google-spreadsheet google-apps-script

google-spreadsheet - trucos - sheet google sheets



La fórmula con script personalizado no se actualiza en Google Spreadsheet (1)

Tengo algunos problemas con una hoja de cálculo: como dije en el título, puse en una columna una fórmula que llama a un script personalizado basado en el valor de otra celda, pero cuando modifico esta otra celda, la fórmula no se actualiza ... Esto parece funcionar con fórmulas estándar, pero, en mi celda, llamar a mi script:

  • Si trato de agregar un espacio en blanco en la celda fomula, el resultado aún no se actualiza.
  • Si borro la celda de la fórmula y vuelvo a escribir la fórmula, todavía muestra el valor anterior.
  • Si copio, pego la celda de fórmula en otra, la nueva celda está actualizada.

Aquí está mi script. Si son pocas palabras: para el parámetro ''compañía'' dado, busque todas las filas que coincidan con este criterio y almacene la celda de la 3ra columna en una variable, finalmente devuelta (así que devuelva el último valor):

function getLastStatut(company) { var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); var out = "not found"; var row; for(i in values){ row = values[i]; if(row[1]==company){ out = row[2]; } } return out; }

Y por ejemplo:

  • A1: Fecha
  • A2: prueba
  • A3: Corriendo
  • A4: = getLastStatut (B1)

Entonces A4 muestra "En ejecución", pero si cambio A3, todavía muestra "En ejecución", mientras que debería mostrar el valor de A3.

¿Es esto un error o hay algo que estoy haciendo mal? Cualquier ayuda es bienvenida.

Alexis


El problema es con la "característica" de almacenamiento en caché para funciones personalizadas. Lo explico en este otro hilo , por favor lea.

Pero la conclusión es que una función personalizada no debe acceder a los datos que no son estáticos, toda la información variable debe pasarse como parámetro. En su caso, todo el conjunto de datos debe ser un parámetro de su secuencia de comandos. Las funciones personalizadas nunca deben tener ningún rango.

//getting values like this is wrong (for a custom function) var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();