{"id":2916,"date":"2020-04-10T17:32:08","date_gmt":"2020-04-10T15:32:08","guid":{"rendered":"https:\/\/www.thediar.com\/?p=2916"},"modified":"2022-03-10T15:48:37","modified_gmt":"2022-03-10T14:48:37","slug":"serverless-web-apps-google-scripts","status":"publish","type":"post","link":"https:\/\/www.thediar.com\/es\/blog\/serverless-web-apps-google-scripts\/","title":{"rendered":"Tutorial Google App Script: Ejemplo de formulario html y base de datos Google Spreadsheet"},"content":{"rendered":"<p>Tradicionalmente, las apliaciones web que hemos desarrollado se han impelementado en infraestructuras cliente-servidor. El paradigma ha sido el de tener servidores propios que reciben las peticiones de los navegadores de nuestros usuarios. Con el creciente uso de frameworks javascript, cada vez m\u00e1s se implementan webs que son sencillamente sitios webs est\u00e1ticos y que no requiren de nada m\u00e1s que servir c\u00f3digo HTML, estilos CSS e im\u00e1genes.<\/p>\n<p>Github pages permite el alojamiento web de sitios web est\u00e1ticos de forma totalmente gratutita para repositorios p\u00fablicos que tengamos. Una de los inconvenientes principales es el de no poder guardar datos de forma permanente en una base de datos o el de tener cierta interactividad con el servidor. Ej: enviar emails.<\/p>\n<p>Con este art\u00edculo vamos a ver un ejemplo de c\u00f3mo un sitios web est\u00e1tico podrian guardar informaci\u00f3n en un Google Spreadsheet.<\/p>\n<h3>1. Crea un Google Spreadsheet y su Google Apps Scripts asociado<\/h3>\n<p>Puedes crear un Google Spreadsheet en blanco desde <a href=\"https:\/\/sheets.new\">sheets.new<\/a>. Ponle un nombre descriptivo, por ejemplo el nombre de tu web y el tipo de formulario que quieres implementar. Ej: midominio.com &#8211; Formulario de contacto<\/p>\n<p>Desde la opci\u00f3n del men\u00fa Herramientas, selecciona Editor de secuencia de comandos. Te recomiendo que pongas el mismo nombre al Google Apps Scripts que al Google Spreadsheet anterior para poder localizarlos r\u00e1pidamente.<\/p>\n<h3>2. Copia el c\u00f3digo y personaliza los campos<\/h3>\n<p>A continuaci\u00f3n, puedes copiar siguiente c\u00f3digo y copiarlo en tu Google Apps Script.<\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist102301248\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-google-apps-script-contact-form-js\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-javascript  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"google-apps-script-contact-form.js content, created by jrosell on 02:40PM on April 10, 2020.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"google-apps-script-contact-form.js\">\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC1\" class=\"blob-code blob-code-inner js-file-line\">var SHEET_NAME = &quot;Sheet1&quot;;    \/\/  Enter sheet name where data is to be written<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC2\" class=\"blob-code blob-code-inner js-file-line\">var inputFields = [&quot;nombre&quot;, &quot;email&quot;, &quot;comentarios&quot;];<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC3\" class=\"blob-code blob-code-inner js-file-line\">var SCRIPT_PROP = PropertiesService.getScriptProperties();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC4\" class=\"blob-code blob-code-inner js-file-line\">function doRequest(e) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC5\" class=\"blob-code blob-code-inner js-file-line\">  var lock = LockService.getPublicLock();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC6\" class=\"blob-code blob-code-inner js-file-line\">  lock.waitLock(30000);  \/\/ wait 30 seconds before conceding defeat.<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC7\" class=\"blob-code blob-code-inner js-file-line\">  try {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC8\" class=\"blob-code blob-code-inner js-file-line\">    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty(&quot;key&quot;));<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC9\" class=\"blob-code blob-code-inner js-file-line\">    var sheet = doc.getSheetByName(SHEET_NAME);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC10\" class=\"blob-code blob-code-inner js-file-line\">    var lastColumn = sheet.getLastColumn();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC11\" class=\"blob-code blob-code-inner js-file-line\">    if(lastColumn==0){<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC12\" class=\"blob-code blob-code-inner js-file-line\">      sheet.getRange(1, 1, 1,inputFields.length).setValues([inputFields]);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC13\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC14\" class=\"blob-code blob-code-inner js-file-line\">    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; \/\/getRange(row, column, numRows, numColumns)    <\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC15\" class=\"blob-code blob-code-inner js-file-line\">    var nextRow = sheet.getLastRow()+1;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC16\" class=\"blob-code blob-code-inner js-file-line\">    var row = []; <\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC17\" class=\"blob-code blob-code-inner js-file-line\">    for (i in headers){<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC18\" class=\"blob-code blob-code-inner js-file-line\">        if (headers[i] == &quot;Timestamp&quot;){ \/\/ special case if you include a &#39;Timestamp&#39; column<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC19\" class=\"blob-code blob-code-inner js-file-line\">          row.push(new Date());<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC20\" class=\"blob-code blob-code-inner js-file-line\">        } else {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC21\" class=\"blob-code blob-code-inner js-file-line\">          if(headers[i]){<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC22\" class=\"blob-code blob-code-inner js-file-line\">            row.push(e.parameter[headers[i]]);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC23\" class=\"blob-code blob-code-inner js-file-line\">          }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC24\" class=\"blob-code blob-code-inner js-file-line\">        }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC25\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC26\" class=\"blob-code blob-code-inner js-file-line\">    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC27\" class=\"blob-code blob-code-inner js-file-line\">    return HtmlService.createHtmlOutput(JSON.stringify({&quot;result&quot;:&quot;success&quot;, &quot;data&quot;: e}));<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC28\" class=\"blob-code blob-code-inner js-file-line\">  } catch(e){<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC29\" class=\"blob-code blob-code-inner js-file-line\">    return ContentService<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC30\" class=\"blob-code blob-code-inner js-file-line\">    .createTextOutput(JSON.stringify({&quot;result&quot;:&quot;error&quot;, &quot;error&quot;: e}))<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC31\" class=\"blob-code blob-code-inner js-file-line\">    .setMimeType(ContentService.MimeType.JSON);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC32\" class=\"blob-code blob-code-inner js-file-line\">  } finally {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC33\" class=\"blob-code blob-code-inner js-file-line\">    lock.releaseLock();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC34\" class=\"blob-code blob-code-inner js-file-line\">  }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC35\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC36\" class=\"blob-code blob-code-inner js-file-line\">function doPost(e){return doRequest(e);}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC37\" class=\"blob-code blob-code-inner js-file-line\">function doGet(e){return doRequest(e);}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC38\" class=\"blob-code blob-code-inner js-file-line\">function setup() {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC39\" class=\"blob-code blob-code-inner js-file-line\">  var doc = SpreadsheetApp.getActiveSpreadsheet();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC40\" class=\"blob-code blob-code-inner js-file-line\">  SCRIPT_PROP.setProperty(&quot;key&quot;, doc.getId());<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC41\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC42\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC43\" class=\"blob-code blob-code-inner js-file-line\">function testSheetsWrite() {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC44\" class=\"blob-code blob-code-inner js-file-line\">   var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty(&quot;key&quot;));<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L45\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"45\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC45\" class=\"blob-code blob-code-inner js-file-line\">    var sheet = doc.getSheetByName(SHEET_NAME);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L46\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"46\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC46\" class=\"blob-code blob-code-inner js-file-line\">    var lastColumn = sheet.getLastColumn();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L47\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"47\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC47\" class=\"blob-code blob-code-inner js-file-line\">    if(lastColumn==0){<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L48\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"48\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC48\" class=\"blob-code blob-code-inner js-file-line\">      sheet.getRange(1, 1, 1,inputFields.length).setValues([inputFields]);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L49\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"49\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC49\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-google-apps-script-contact-form-js-L50\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"50\"><\/td>\n<td id=\"file-google-apps-script-contact-form-js-LC50\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/jrosell\/be5766949856f3e54c1d42992342e30d\/raw\/47ac4784e89b4a16b007c4549315d6a49cd5a51a\/google-apps-script-contact-form.js\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/jrosell\/be5766949856f3e54c1d42992342e30d#file-google-apps-script-contact-form-js\" class=\"Link--inTextBlock\"><br \/>\n          google-apps-script-contact-form.js<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n<p>Aseg\u00farate de personalizar los campos <span class=\"pl-c1\">SHEET_NAME y <span class=\"pl-s1\">inputFields por el nombre de pesta\u00f1a que quieras usar en tu Google Spreadsheet y los campos del formulario que quieras recibir. En este caso estamos usando la pesta\u00f1a Sheet1 y los campos <span class=\"pl-s\">nombre<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s\">email y <\/span><span class=\"pl-s\">comentarios.<\/span><br \/>\n<\/span><\/span><\/p>\n<h3>3. Instala el Google Apps Scripts<\/h3>\n<p>Ejecuta la funci\u00f3n setup. Esto lo que har\u00e1 es a\u00f1adir como propiedad del Google Apps Scripts el dientificador del Google Spreadsheet. Si lo deseas, podrias a\u00f1adirlo manualmente.<\/p>\n<h3>4. Publica la aplicaci\u00f3n web<\/h3>\n<p>En el men\u00fa Publicar, selecciona la opci\u00f3n Implementar como aplicaci\u00f3n web. Aseg\u00farate de seleccionar la opci\u00f3n \u00abAnyone, even anonymous\u00bb en \u00abWho has access to the app:\u00bb y publica.<\/p>\n<p>No te preocupes si ves la alerta \u00abThis app isn&#8217;t verified\u00bb. Tienes que ir a las opciones avanzadas\u00a0 y seleccionar la opci\u00f3n \u00abunsafe\u00bb.<\/p>\n<p>Gu\u00e1rdate la URL ya que es en esta URL d\u00f3nde tendras que enviar los datos de tu formulario.<\/p>\n<h3>5. Prueba el formulario<\/h3>\n<p>En tu p\u00e1gina web ya puedes usar el formulario. Copia y pega este HTMl et tu web y modifica la URL que guardase en la l\u00ednea 22<\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist102301863\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-contact-form-html\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-html  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"contact-form.html content, created by jrosell on 03:24PM on April 10, 2020.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"contact-form.html\">\n<tr>\n<td id=\"file-contact-form-html-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-contact-form-html-LC1\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-contact-form-html-LC2\" class=\"blob-code blob-code-inner js-file-line\">&lt;!DOCTYPE html&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-contact-form-html-LC3\" class=\"blob-code blob-code-inner js-file-line\">&lt;html&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-contact-form-html-LC4\" class=\"blob-code blob-code-inner js-file-line\">    &lt;head&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-contact-form-html-LC5\" class=\"blob-code blob-code-inner js-file-line\">        &lt;meta charset=&quot;UTF-8&quot;&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-contact-form-html-LC6\" class=\"blob-code blob-code-inner js-file-line\">        &lt;title&gt;Formulario de contacto&lt;\/title&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-contact-form-html-LC7\" class=\"blob-code blob-code-inner js-file-line\">        &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.4.1\/jquery.min.js&quot;&gt;&lt;\/script&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-contact-form-html-LC8\" class=\"blob-code blob-code-inner js-file-line\">        &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery-serialize-object\/2.5.0\/jquery.serialize-object.min.js&quot;&gt;&lt;\/script&gt;    <\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-contact-form-html-LC9\" class=\"blob-code blob-code-inner js-file-line\">    &lt;\/head&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-contact-form-html-LC10\" class=\"blob-code blob-code-inner js-file-line\">    &lt;body&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-contact-form-html-LC11\" class=\"blob-code blob-code-inner js-file-line\">        &lt;form id=&quot;contact-form&quot;&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-contact-form-html-LC12\" class=\"blob-code blob-code-inner js-file-line\">            &lt;h2&gt;Formulario de contacto&lt;\/h2&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-contact-form-html-LC13\" class=\"blob-code blob-code-inner js-file-line\">            &lt;p&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-contact-form-html-LC14\" class=\"blob-code blob-code-inner js-file-line\">                &lt;label&gt;Nombre&lt;br&gt;&lt;input type=&quot;text&quot;  name=&quot;nombre&quot;&gt;&lt;\/label&gt;&lt;br&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-contact-form-html-LC15\" class=\"blob-code blob-code-inner js-file-line\">                &lt;label&gt;Email&lt;br&gt;&lt;input type=&quot;email&quot; name=&quot;email&quot;&gt;&lt;\/label&gt;&lt;br&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-contact-form-html-LC16\" class=\"blob-code blob-code-inner js-file-line\">                &lt;label&gt;Comentarios&lt;br&gt;&lt;\/label&gt;&lt;textarea name=&quot;comentarios&quot; cols=40 rows=5&gt;&lt;\/textarea&gt;&lt;\/label&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-contact-form-html-LC17\" class=\"blob-code blob-code-inner js-file-line\">            &lt;\/p&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-contact-form-html-LC18\" class=\"blob-code blob-code-inner js-file-line\">            &lt;input id=&quot;submit-contact-form&quot; type=&quot;submit&quot; value=&quot;Submit&quot;&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-contact-form-html-LC19\" class=\"blob-code blob-code-inner js-file-line\">        &lt;\/form&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-contact-form-html-LC20\" class=\"blob-code blob-code-inner js-file-line\">        &lt;script&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-contact-form-html-LC21\" class=\"blob-code blob-code-inner js-file-line\">        (function() {       <\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-contact-form-html-LC22\" class=\"blob-code blob-code-inner js-file-line\">            var $form = $(&#39;form#contact-form&#39;), url = &#39;https:\/\/script.google.com\/macros\/s\/key\/exec&#39;;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-contact-form-html-LC23\" class=\"blob-code blob-code-inner js-file-line\">            $(&#39;#submit-contact-form&#39;).on(&#39;click&#39;, function(e) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-contact-form-html-LC24\" class=\"blob-code blob-code-inner js-file-line\">                e.preventDefault();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-contact-form-html-LC25\" class=\"blob-code blob-code-inner js-file-line\">                var jqxhr = $.ajax({<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-contact-form-html-LC26\" class=\"blob-code blob-code-inner js-file-line\">                    url: url,<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-contact-form-html-LC27\" class=\"blob-code blob-code-inner js-file-line\">                    method: &quot;GET&quot;,<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-contact-form-html-LC28\" class=\"blob-code blob-code-inner js-file-line\">                    dataType: &quot;json&quot;,<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-contact-form-html-LC29\" class=\"blob-code blob-code-inner js-file-line\">                    data: $form.serializeObject(),<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-contact-form-html-LC30\" class=\"blob-code blob-code-inner js-file-line\">                    success: function(data) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-contact-form-html-LC31\" class=\"blob-code blob-code-inner js-file-line\">                        console.log(data);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-contact-form-html-LC32\" class=\"blob-code blob-code-inner js-file-line\">                        $(&#39;form#contact-form&#39;).hide();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-contact-form-html-LC33\" class=\"blob-code blob-code-inner js-file-line\">                        $(&#39;body&#39;).append(&quot;&lt;p style=&#39;color:green&#39;&gt;Gracias por tu inter\u00e9s. Contactaremos contigo en breve.&lt;\/p&gt;&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-contact-form-html-LC34\" class=\"blob-code blob-code-inner js-file-line\">                    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-contact-form-html-LC35\" class=\"blob-code blob-code-inner js-file-line\">                });<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-contact-form-html-LC36\" class=\"blob-code blob-code-inner js-file-line\">            });<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-contact-form-html-LC37\" class=\"blob-code blob-code-inner js-file-line\">        })();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-contact-form-html-LC38\" class=\"blob-code blob-code-inner js-file-line\">        &lt;\/script&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-contact-form-html-LC39\" class=\"blob-code blob-code-inner js-file-line\">    &lt;\/body&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-contact-form-html-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-contact-form-html-LC40\" class=\"blob-code blob-code-inner js-file-line\">&lt;\/html&gt;<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/jrosell\/5c8873e8d6f4098ddcc05a5488da05c3\/raw\/d82e40f4adaa87e0fd0f977e3a09f01e356c138a\/contact-form.html\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/jrosell\/5c8873e8d6f4098ddcc05a5488da05c3#file-contact-form-html\" class=\"Link--inTextBlock\"><br \/>\n          contact-form.html<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n<p>Pr\u00faebalo y personaliza lo que quieras.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Tradicionalmente, las apliaciones web que hemos desarrollado se han impelementado en infraestructuras cliente-servidor. El paradigma ha sido el de tener servidores propios que reciben las peticiones de los navegadores de nuestros usuarios. Con el creciente uso de frameworks javascript, cada [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3312,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","clearfix"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.thediar.com\/wp-content\/uploads\/serverless-google-apps-14.png?fit=662%2C298&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p8d1gX-L2","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/posts\/2916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/comments?post=2916"}],"version-history":[{"count":7,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/posts\/2916\/revisions"}],"predecessor-version":[{"id":6229,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/posts\/2916\/revisions\/6229"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/media\/3312"}],"wp:attachment":[{"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/media?parent=2916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/categories?post=2916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thediar.com\/es\/wp-json\/wp\/v2\/tags?post=2916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}