He estado atrapado aquí con este error durante las últimas 3 horas. Excepción de error: no se puede llamar a SpreadsheetApp.getUi() desde este contexto.
Apreciaría la ayuda.
function onOpen(e) { var menu = SpreadsheetApp.getUi().createMenu("Refresh");//The error is here menu.addItem("Refresh Week", "menu"); menu.addToUi(); } //The same thing goes to this function as well function menu(){ //get the good week number var date = new Date(); var wn = [(Math.floor(WEEKNUMBER(date))+3).toFixed(0)] do { wn.push((wn[wn.length-1]-1).toFixed(0)) } while(wn[wn.length-1] != 348); var line = "<select style='width:60px;height:40px;' id='select'>" for ( var x in wn ) line +="<option>" + wn[x] + "</option>" line +="</select>" var ui = SpreadsheetApp.getUi(); var html = HtmlService.createHtmlOutputFromFile('Selector') .setWidth(200) .setHeight(150).setContent("<div>"+line + "</div><br><div><button onclick='reset()'>Confirm</button></div><script>function reset(){var wn = document.getElementById('select').value;document.getElementsByTagName('Body')[0].style.cursor = 'wait';google.script.run.withSuccessHandler(function (){google.script.host.close();}).readWP2(wn);}</script>") SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'Please select a week number'); }Entonces, cuando creo una variable y la configuro en SpreadsheetApp.getUi(), empiezo a recibir este error y el resto del código ya no se ejecuta debido a este error.
Estoy usando el script de la aplicación de Google.
Creo que lo que está tratando de hacer es crear un cuadro de diálogo similar a los cuadros emergentes de JavaScript. Desafortunadamente, Apps Script no tiene esa característica. Primero debe vincularlo a Google Sheets, Docs, Slides o Forms y el cuadro de diálogo aparecerá en esas aplicaciones.
Pude replicar su problema ejecutando su código en un script independiente. Una secuencia de comandos independiente es cualquier secuencia de comandos que no está vinculada a un archivo de Hojas de cálculo, Documentos, Presentaciones o Formularios de Google ni a Google Sites.
Ejemplo independiente:
SpreadsheetApp.getUi(); solo interactúa con la interfaz de usuario para la instancia actual de una hoja de cálculo abierta, y solo si el script está vinculado a la hoja de cálculo.
Para resolver su problema, asegúrese de:
Su código debería funcionar en el menú de la hoja de cálculo o en el script de aplicaciones, pero el cuadro de diálogo siempre se mostrará en la hoja de cálculo.