Quiero llamar a la API de Steem desde dentro de una función de Google Apps Script. Quiero ver la respuesta apropiada del servidor. Pero me sale el siguiente error en su lugar.
De acuerdo con esta documentación , ejecuté la siguiente prueba.
// @see https://github.com/steemit/steem-js/tree/master/doc#browser const getHelloWorld = () => { const SOURCE_CODE_URL = 'https://cdn.jsdelivr.net/npm/steem/dist/steem.min.js'; const response = UrlFetchApp.fetch( SOURCE_CODE_URL, ); const code = response.getContentText(); const steem = eval( code, ); steem.api.getAccounts([ 'ned', 'dan', ], ( error, response, ) => { Logger.log( error, response, ); }); }En mi investigación anterior, leí que esta respuesta dice:
Puede hacer esto:
eval(UrlFetchApp.fetch("my url").getContentText())
¿Cómo puedo llamar a la API de Steem desde Google Apps Script?
Resumen de los comentarios:
Aquí hay una pregunta SO similar pero diferente sobre la importación de módulos.
2021-07-12
Recientemente estaba procesando algunos datos usando Apps Script y necesitaba analizar información de dominio de segundo nivel de un montón de URL. Este definitivamente no es el trabajo para las expresiones regulares, pero es perfecto para un módulo npm, psl, que usa la lista de sufijos públicos.
Pero aunque Apps Script ha recorrido un largo camino y presenta muchas bondades de ES2015+ en la actualidad, no es posible extraer código arbitrario de npm y ejecutarlo directamente.
Para solucionar esto, creé el siguiente archivo index.js localmente, exportando la interfaz a la que quería llamar desde Apps Script:
import psl from 'psl'; import Url from 'url-parse'; export function parseHostname(sourceURL) { const url = new Url(sourceURL); return psl.parse(url.hostname); }Luego, instalé las dependencias necesarias de npm e incorporé este código con esbuild:
npm init -y npm install --save-dev psl url-parse punycode npx esbuild index.js --bundle --global-name=psl --outfile=psl.jsCopié manualmente el contenido del archivo psl.js en un archivo psl.gs, junto con mi archivo Code.gs principal en el editor de Apps Script. (Esto sería molesto si la salida del paquete cambiara con frecuencia, pero hacerlo una vez a mano no fue un problema).
Apps Script automáticamente hará que el contenido de todos los archivos .gs en un proyecto sea visible en el mismo ámbito global, por lo que ahora podría escribir código como
const {sld} = psl.parseHostname(url);dentro de mi archivo principal Code.gs.
El entorno de tiempo de ejecución de Apps Script todavía tiene un montón de peculiaridades en comparación con Node, así que no espere que todo el código incluido funcione tal como está. Es posible que se necesiten Polyfills (utilicé url-parse, por ejemplo, ya que el objeto de URL nativo no está disponible en Apps Script).
Una vez que copie el código incluido en Apps Script, nunca se actualizará, así que asegúrese de estar preparado para volver a empaquetar cuando haya actualizaciones de seguridad o de características para los módulos que está usando.