tutorial script manager google formularios español apps google-apps-script google-spreadsheet google-docs-api google-drive-sdk

google-apps-script - manager - manual de google apps script



Google Sheets & Docs Script no puede crear un menú adicional cuando se instala el complemento desde la tienda de Chrome (1)

Posible causa es la siguiente:

Usualmente esto es causado por un problema con el ciclo de vida de autorización, específicamente la etapa de apertura.

El culpable más común es una variable global en el código que intenta acceder a los servicios de Google sin autorización, como:

var doc = DocumentApp.getActiveDocument ();

Ver la documentación:

Advertencia: cuando se ejecuta su función onOpen (e), se carga todo el script y se ejecuta cualquier instrucción global. Estas declaraciones se ejecutan bajo el mismo modo de autorización que en Open (e) y fallarán si el modo las prohíbe. Esto evita que se ejecute Open (e). Si su complemento publicado no puede agregar sus elementos de menú, busque en la consola de JavaScript del navegador para ver si se produjo un error, luego examine su script para ver si la función onOpen (e) o las variables globales llaman a servicios que no están permitidos. en AuthMode.NONE.

Aquí está mi script:

function onOpen(e) { SpreadsheetApp.getUi().createAddonMenu() .addItem(''Browse Templates'', ''browseTemplates'') .addToUi(); } function onInstall(e) { onOpen(e); } function browseTemplates(){ collectBasicData(); // Display a modal dialog box with custom HtmlService content. var htmlOutput = HtmlService .createTemplateFromFile("Gallery").evaluate() .setWidth(700) .setHeight(510); SpreadsheetApp.getUi().showModalDialog(htmlOutput, ''Spreadsheet123 - Template Vault''); } function collectAllData(){ var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(DATA_SHEET); DATA = sheet.getDataRange().getValues(); return DATA; } function collectBasicData(){ var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(PIVOT_SHEET); var tabSheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(TAB_SHEET); BASIC_DATA = { "tab_about" : getValue(tabSheet,"B1"), "tab_help": getValue(tabSheet,"B2"), "pivot":sheet.getDataRange().getValues() }; return false; } function getValue(sheet,addr){ return sheet.getRange(addr).getValue().toString().replace(/^/s+|/s+$/g, ''''); } function createACopy(id){ var docName = DocsList.getFileById(id).getName(); return DocsList.getFileById(id).makeCopy(docName).getUrl(); } function insertInCurrent(id){ var destinationSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); var sourceSheets = SpreadsheetApp.openById(id).getSheets(); for(var i=0;i<sourceSheets.length;i++){ var sheetName = sourceSheets[i].getName(); var source = SpreadsheetApp.openById(id).getSheetByName(sheetName); source.copyTo(destinationSpreadSheet).setName(sheetName); } }

¿Puedes ayudarme un poco o mucho?

Gracias por adelantado


De acuerdo, mi código era en realidad correcto, pero mi error fue que debería haber guardado los cambios realizados en mi código en la nueva versión antes de publicarlo en la tienda, lo que no hice y, por lo tanto, todos los cambios que hice simplemente se ignoraron.

function onOpen(e) { SpreadsheetApp.getUi().createAddonMenu() .addItem(''Browse Templates'', ''browseTemplates'') .addToUi(); } function onInstall(e) { onOpen(e); }