wolf47
@wolf47
Айтишник, немного програмирую на JS

Как запустить 10-15 функции последовательно в google apps script?

Самого доброго дня друзья!

Написал скрипт который запрашивает у сервиса список заказов от торговых представителей.
У меня есть 10 проектов, они еще будут увеличиваться, плюс может быть такое что некоторые запросы могут выполняться больше чем 5 минут (это время которые дает гугл для загрузки данных из внешних источников, но этот вопрос уже другой темы)

У меня такая проблема. Вешаю триггер на функции, но почему то выполняется только 3-4 из них, а остальные не грузятся.

function addTriggers (){
ScriptApp.newTrigger("startUpdate").timeBased().everyHours(6).create();
}

function startUpdate(){
danon();
mars();
curren1();
curren2();
vilma();
seitek();  
radost();
rolls();
lysse();
}


Как сделать так чтобы они грузились? Я не могу придумать способ по которому каждая функция грузилась в определенное время.
Например так:

function addTriggers () {
ScriptApp.newTrigger("danon").timeBased().everyHours(6).create();
ScriptApp.newTrigger("mars").timeBased().everyHours(6).create();
ScriptApp.newTrigger("seitek").timeBased().everyHours(6).create();
}


Я уже так пробовал, но, мой скрипт работает не правильно при заполнений данных таблицы.
  • Вопрос задан
  • 754 просмотра
Решения вопроса 1
oshliaer
@oshliaer
Google Products Expert
С некоторой долей вероятности можно предположить, что вот это будет работать

/**
 *
 */
const SETTINGS = Object.freeze({
  fns: [
    'danon',
    'mars',
    'curren1',
    'curren2',
    'vilma',
    'seitek',
    'radost',
    'rolls',
    'lysse',
  ],
});

/**
 *
 */
function addTriggers() {
  ScriptApp.getProjectTriggers().forEach((trigger) => {
    if (
      trigger.getEventType() === ScriptApp.EventType.CLOCK &&
      SETTINGS.fns.includes(trigger.getHandlerFunction())
    ) {
      ScriptApp.deleteTrigger(trigger);
    }
  });
  SETTINGS.fns.forEach((fn) =>
    ScriptApp.newTrigger(fn).timeBased().everyHours(6).create()
  );
}


Триггерам ничего не мешает работать параллельно, поэтому ошибок быть не должно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Может, третья или четвертая функция падает с ошибкой, и поэтому выполнение дальше не идет?
Ответ написан
scapp
@scapp
JS фрилансер
В отладчике запусти свою функцию в режиме дебагера - кнопка с жучком - он тебе скажет где ошибка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы