Realmente aprecio algo de ayuda con este código. Estaba funcionando antes en las hojas de Google, pero de repente comenzó a aparecer con mensajes de error.
El código completo está abajo:
function getDataForSearch() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("TEST FORMULAR"); return ws.getRange(6, 1, ws.getLastRow()-1, 6).getValues(); } function setDataForSearch(){ google.script.run.withSuccessHandler(function(dataReturned){ data = dataReturned.slice(); }).getDataForSearch(); } function search(){ var searchInput = document.getElementById("searchInput").value.toString().toLowerCase().trim(); var searchWords = searchInput.split(/\s+/); var searchColumns = [0]; var resultsArray = searchInput == "" ? [] : data.filter(function(r){ return searchWords.every(function(word){ return searchColumns.some(function(colIndex){ return r[colIndex].toString().toLowerCase().indexOf(word) != -1; }); }); }); var searchResultsBox = document.getElementById("searchResults"); var templateBox = document.getElementById("rowTemplate"); var template = templateBox.content; searchResultsBox.innerHTML = ""; resultsArray.forEach(function(r){ var tr = template.cloneNode(true); var typeInitiativeColumn = tr.querySelector(".type-initiative"); var pepRefColumn = tr.querySelector(".pep-ref"); var projectNameColumn = tr.querySelector(".project-name"); pepRefColumn.textContent = r[0]; typeInitiativeColumn.textContent = r[1]; projectNameColumn.textContent = r[2]; searchResultsBox.appendChild(tr); }); }Parece que data no están undefined o dataReturned devuelve null . Puedes hacer una solución, como
var data = []; // define globally google.script.run.withSuccessHandler(function (dataReturned) { if (dataReturned.length) { // check if dataReturned is not null in setDataForSearch function data = dataReturned.slice(); } }).getDataForSearch(); // then check if data is defined & not empty in search function var resultsArray = !data.length || searchInput == "" ? [] : data.filter(function (r) { });Editar Reemplazar
!data.length || searchInput == "" ?con
data === null || searchInput == "" ?Cree una condición if como se muestra a continuación
google.script.run.withSuccessHandler(function(dataReturned){ if(dataReturned && typeof dataReturned !== 'undefined'){ data = dataReturned.slice(); }else { data = "null or undefined" //or do whatever you want in else } }).getDataForSearch(); Comprobará si dataReturned no es nulo o indefinido. Si es nulo/indefinido/falso, no ejecutará lo proporcionado en la condición if.
¿Por qué ocurrió el error?
Está tratando de obtener algo de un nulo/indefinido. Es algo como null.slice() que hiciste
También puedes probar algo como:
google.script.run.withSuccessHandler(function(dataReturned){ data = dataReturned?.slice(); }).getDataForSearch();