Подтвердить что ты не робот

Как передать параметр в синхронизированную функцию триггера в библиотеке script

Я создал функцию, которая запускается каждые 30 минут, и я хочу передать некоторый параметр. У меня есть одна библиотека, которая возвращает carHistory, и мою таблицу, откуда я вызываю библиотечную функцию.

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();
}

В моем SpreadSheet

Code.gs:

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

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

EDITED:

Code.gs: Я попытался использовать PropertyService, но все еще не работает

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

    Library1.carHistory();
}

Библиотека:

 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();
}
4b9b3361

Ответ 1

Свойства - это не общий ресурс; каждый script имеет свой собственный набор свойств, которые не используются совместно с другими скриптами. Такое поведение влияет на то, как вы можете обрабатывать свойства в библиотеке, как описано в Scope Resource.

Не разделяемый ресурс означает, что как библиотека, так и включенный script имеют встроенный доступ только к их экземпляру ресурса. Однако библиотека может обеспечить доступ к своим не общим ресурсам, используя явные функции, которые работают с ними.

Иными словами; не-общие свойства библиотеки могут быть открыты для основных функций script по библиотекам.

Эта функция может использоваться для настройки рабочих параметров для функции запуска библиотеки:

 
/**
 * 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);
  }
}

Вы бы использовали его следующим образом:

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

  Library1.setParameters(uProps);
  Library1.carHistory();
}