Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
¿Cómo evitar el error de objeto vacío en un bucle usando Google Apps Script?

Llamo a una API y obtengo datos a través de su paginación. Sin embargo, cuando llego a la última página, el objeto que me da la última página está vacío y arroja el siguiente error: TypeError: Cannot convert undefined or null to object Además, no tengo ningún dato de esa última página.

Aquí está la información de paginación que obtengo:

 {"count":100,"total":545,"_links": { "self":{ "href":"\/candidates?page=0&per_page=100" }, "next":{ "href":"\/candidates?per_page=100" }, "last":{ "href":"\/candidates?page=6&per_page=100" } },

Aquí está el código que estoy usando para obtener los datos:

 function allcandidates() { const url = "https://api.catsone.com/v3/candidates"; const params = { 'muteHttpExceptions': true, 'method': 'GET', 'redirect': 'follow', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Token ' + API_KEY } }; let pageNum = 1; let lastPgNo; let data = {}, output = []; do { let currentUrl = url + '?' + 'per_page=100' + '&' + 'page=' + pageNum; //One of their URL parameter is "per_page", which is 25 result/page and it go up to 100. I'm not sure if the fact that the last page doesn't have all 100 results may result in an error, too. const response = UrlFetchApp.fetch(currentUrl, params); const respCode = response.getResponseCode(); if (respCode != 200) { Browser.msgBox('The server seems to be temporarily down. Please try again later.'); return; } //Gets the last page number const getText = response.getContentText(); const lastPageObj = JSON.parse(getText)['_links']['last']; const lastPgVal = Object.values(lastPageObj); //This is where the error occurs const lastPgText = lastPgVal.toString(); lastPgNo = Number(lastPgText.split('?page=').pop().split('&')[0]) //Gets current page const currentPageObj = JSON.parse(getText)['_links']['self']; const currentPgVal = Object.values(currentPageObj); const nextPgText = currentPgVal.toString(); var currentPgNo = Number(nextPgText.split('?page=').pop().split('&')[0]) const dataSet = JSON.parse(getText)['_embedded']['candidates']; for (let i = 0; i < dataSet.length; i++) { data = dataSet[i]; output.push([data.id]); } pageNum = pageNum + 1; } while (pageNum <= lastPgNo); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede usar una declaración if y continue . es decir, reemplazar

 const lastPgVal = Object.values(lastPageObj);

por

 if(lastPageObj){ const lastPgVal = Object.values(lastPageObj); } else { continue; }

Otra opción es usar try...catch

Recursos

  • https://developer.mozilla.org/en-US/docs/Glossary/Truthy
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda