scripts script guide google from examples example ejemplos developers developer apps app google-apps-script google-spreadsheet google-spreadsheet-api

google apps script - guide - Cómo pasar los parámetros a la función de disparo temporizado en el script de la biblioteca



google apps script sample (1)

Las propiedades son un recurso no compartido; cada script tiene su propio conjunto de propiedades que no se comparten con otras secuencias de comandos. Este comportamiento afecta cómo puede manejar propiedades en una Biblioteca, como se describe en el Alcance de recursos .

Un recurso no compartido significa que tanto la biblioteca como el script incluido tienen acceso integrado solo a su instancia del recurso. Sin embargo, una biblioteca puede proporcionar acceso a sus recursos no compartidos al tener funciones explícitas que operan en ellos.

En otras palabras; las funciones de la biblioteca pueden exponer las propiedades no compartidas de la biblioteca al script principal .

Esta función se puede utilizar para configurar los parámetros de funcionamiento para la función de activación de su biblioteca:

/** * Set name,value pairs of parameters for library function. * * @param {Object} parameters Object with named properties to be * used as library function parameters. */ function setParameters( parameters ) { var props = PropertiesService.getUserProperties(); for (var key in parameters) { var value = parameters[key]; props.setProperty(key, value); } }

Lo usarías así:

function startOnce(){ var uProps = { ''Maker'':''Honda'', ''Number'':''US-xxx'' }); Library1.setParameters(uProps); Library1.carHistory(); }

Creé una función que se dispara cada 30 minutos y quiero pasar algún parámetro. Tengo una biblioteca que devuelve carHistory y mi hoja de cálculo desde donde llamo a la función de biblioteca.

Library1.gs

function carHistory(number,maker) { // code logic } function startEvery30mins_CarHistory(number,maker) { //This function works carHistory(number,maker); // how to trigger this with parameter. ScriptApp.newTrigger("carHistory") .timeBased() .everyMinutes(30) .create(); }

En mi SpreadSheet

Code.gs:

function startOnce(){ Library1.carHistory("US-xxx","Honda"); } function startEvery30mins(){ Library1.startEvery30mins_CarHistory("US-xxx","Honda"); }

EDITADO:

Code.gs: Intenté usar PropertiesService , pero todavía no funciona

function startOnce(){ var uProps = PropertiesService.getUserProperties(); uProps.setProperty(''Maker'', ''Honda''); uProps.setProperty(''Number'', ''US-xxx''); Library1.carHistory(); }

Biblioteca:

function carHistory() { // Fetch Parametr var getProps=PropertiesService.getUserProperties(); var c_Maker= getProps.getProperty(''Maker''); var c_Number=getProps.getProperty(''Number''); // code logic }

function startEvery30mins_CarHistory() { ScriptApp.newTrigger("carHistory") .timeBased() .everyMinutes(30) .create(); }