Así que estoy tratando de llenar una hoja de Google usando el script de aplicaciones. Se supone que debo recibir un objeto JSON de Postman a través de POST. El objeto aparecerá como tal:
{ "email":"jdoe@gmail.com", "full_name": "John Doe", "score": 4.0, "max_score": 5.0 "attempt_starttime": "2021-09-21T03:28:13+0000", "attempt_endtime":"2021-09-21T03:28:35+0000", "invited_on":"2021-09-21T03:27:50+0000", "percentage_score":100.0, }Estamos asumiendo que siempre estará en este formato y orden sin falta. Luego, los datos se modifican y se colocan en esta hoja: Hoja de Google
Me gustaría obtener ayuda sobre cómo completar la hoja solo con los datos del objeto JSON primero, ya que estoy fallando en eso. Creo que puedo modificarlo para mi propósito desde allí. También me gustaría saber cómo puedo convertir las marcas de tiempo en días de semanas y restarlas también. Soy nuevo tanto en Apps Script como en Postman, por lo que agradecería cualquier ayuda.
Gracias.
Esto es lo que tengo hasta ahora:
function doPost(e) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("Sheet1"); const headers = ws.getRange(1, 1, 1, ws.getLastColumn()).getValues()[0]; const dataHeaders = headers.slice() const body = e.postData.contents; const jsonBody = JSON.parse(body); const data = dataHeaders.map(h => jsonBody[h]); ws.appendRow(data); }Si desea mantener los encabezados como están, agregue una línea antes de sus encabezados actuales con la ortografía exacta , es decir: nombre_completo, correo electrónico, puntaje, puntaje máximo, intento_hora de inicio, intento_hora de finalización, invitado_en, porcentaje_puntuación y corrija su json (corrija la situación de las comas). .
Por ejemplo
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("Sheet1"); const dataHeaders = ws.getRange(1, 1, 1, ws.getLastColumn()).getValues()[0]; const body = `{ "email":"jdoe@gmail.com", "full_name": "John Doe", "score": 4.0, "max_score": 5.0, "attempt_starttime": "2021-09-21T03:28:13+0000", "attempt_endtime":"2021-09-21T03:28:35+0000", "invited_on":"2021-09-21T03:27:50+0000", "percentage_score":100.0 }` const jsonBody = JSON.parse(body); const data = dataHeaders.map(h => jsonBody[h]); ws.appendRow(data); }