Estoy tratando de escribir un contenedor alrededor de importdata() de Google Sheets en code.gs :
100 101 function cryptofinance(token) { 102 var currentCell = SpreadsheetApp.getCurrentCell(); 103 currentCell.setValue('=importdata("https://cryptoprices.cc/"+ token)'); 104 } 105 106 ...La idea es llamar a la función desde cualquier hoja de la hoja de cálculo para obtener el precio de cualquier ficha de moneda criptográfica:
| A +---+-------------------------+ | 1 | =cryptofinance("aion") | +---+-------------------------+Sin embargo, recibo un error cuando intento esto:
| A +---+-------------------------+ | 1 | #ERROR | +---+-------------------------+ #ERROR Exception: You do not have permission to perform that action. (line 102).
¿Por qué sucede esto y cómo puedo solucionarlo?
Las funciones personalizadas se pueden usar para devolver valores, punto.
La función personalizada no se puede usar para ejecutar ningún método que requiera autorización para ejecutarse y no se pueden modificar los atributos de la celda/rango que contienen la fórmula usando la función personalizada. Árbitro. https://developers.google.com/apps-script/guides/sheets/functions
Puede usar un servicio UrlFetchApp en una función personalizada para llamar a servicios externos, pero aún tiene las restricciones de la función personalizada, es decir, un límite de tiempo de ejecución de 30 segundos.
Relacionado
function cryptofinance(token = "AION") { //Logger.log(UrlFetchApp.fetch(`https://cryptoprices.cc/${token}/`)); return UrlFetchApp.fetch(`https://cryptoprices.cc/${token}/`).getContentText(); }Apps Scripts asume algunos permisos cuando ejecuta funciones, pero en algunos casos, debe actualizar su appsscripts.json con los permisos de OAuth correctos manualmente para otorgar permiso para acceder a los datos.
Para mostrar su appsscripts.json , vaya a la configuración de su proyecto y cambie la opción "Mostrar archivo de manifiesto 'appsscript.json' en el editor". Esto debería revelarlo en la barra lateral de Apps Scripts.
Una vez en appsscript.json , agregue
"oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets", ]Puedes leer más al respecto aquí