Estoy tratando de completar un formulario creado en la aplicación web de script de la aplicación de Google a través de la URL con la intención de mostrar el campo pero estar inactivo y un UUID para enviar el formulario.
En la prueba de la aplicación web, el formulario se completa con una URL, por ejemplo: https://script.google.com/macros/s/AKfycbwam4eZHPrs2ooVQLzJZgMcFb9gfXC2OPSq8f7Xkp9z/dev?fn=bob rellenando "bob" en el campo "fn".
Sin embargo, para eliminar Google "Esta aplicación fue creada por otro usuario, no por Google. Términos de servicio" , colocamos la aplicación web y el iframe o el enlace en los sitios de Google. Esto lanza una llave inglesa en las obras.
Cualquier consejo será muy apreciado.
function doGet() { return HtmlService.createTemplateFromFile("page").evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } function userClicked(userInfo){ const url = "https://docs.google.com/spreadsheets/d/1-7D4bXhm1Yx0ekRUmrwr8fTsdQ0dLtMI4gYG-THPUdk/edit#gid=0"; const ss = SpreadsheetApp.openByUrl(url); const ws = ss.getSheetByName("data"); ws.appendRow([userInfo.firstName,userInfo.lastName,userInfo.app,new Date()]) // Logger.log(name + " Clicked The Button"); } function include(filename){ return HtmlService.createHtmlOutputFromFile(filename).getContent(); } <script> document.addEventListener('DOMContentLoaded', function() { var elems = document.querySelectorAll('select'); var instances = M.FormSelect.init(elems); }); document.getElementById("btn").addEventListener("click",doStuff); function doStuff(){ const userInfo = {}; userInfo.firstName = document.getElementById("fn").value; userInfo.lastName = document.getElementById("ln").value; userInfo.app = document.getElementById("app").value; google.script.run.userClicked(userInfo); document.getElementById("fn").value = ""; document.getElementById("ln").value = ""; var myApp = document.getElementById("app"); myApp.selectedIndex = 0; M.FormSelect.init(myApp); } </script> <script> google.script.url.getLocation(function(location){ document.getElementById('fn').value = location.parameters.fn[0] document.getElementById('ln').value = location.parameters.ln[0] }) </script>Desafortunadamente, no hay forma de pasar un parámetro de cadena de consulta a una aplicación web de Google Apps Script incrustada en Google Sites, pero esto se puede hacer usando JavaScript del lado del cliente en una página web "normal".
Nota: Utilice la URL /exec , no la /dev .
<body onload="loadIframe();"> <div id="content"> <iframe width="100%" height="100%" frameborder="0"></iframe> </div> <script> function loadIframe(){ const url = "put_here_your_web_app_url" + window.location.search; document.querySelector('iframe').src = url; } </script> </body>Relacionado