Могу ли я сократить время ожидания на 6 минут?

#google-apps-script

Вопрос:

по-видимому, в моем коде есть что-то, что застряло, так как иногда это приводит к тому, что скрипт запускается до истечения 6 минут.

Я все еще пытаюсь найти этот код, но в то же время мне действительно нужно предотвратить ожидание. Моему сценарию обычно требуется всего 10 секунд.

Есть ли способ для меня настроить так, чтобы любой сценарий, который достигает 10 секунд, должен быть завершен.

очень признателен!

Комментарии:

1. Вероятно, было бы проще включить отладчик.

2. Спасибо. . но как мне отслеживать ошибки, когда это происходит, когда меня нет дома? . похоже, это происходит «случайно» . . поэтому я не могу тестировать выполнение, но ничего не идет не так.

3. Проверьте время в различных частях кода и выдайте ошибку, если timestart-new Date()>10

4. Поделитесь своим кодом, мы поможем вам придумать лучшее решение 🙂

5. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Ответ №1:

Прежде всего, не лучше ли переписать код так, чтобы он не доходил до 6 минут?

Ссылка URL

Если есть вероятность, что он превысит 6 минут, попробуйте использовать триггер для его выполнения более 6 минут.

Ссылка URL

Комментарии:

1. эй, спасибо за это, я думаю, вы меня неправильно поняли. мой код завершается менее чем за 30 секунд. однако где-то есть ошибка, которая вызывает зависание до 6 минут. пока я ищу его, мне нужен способ ПРЕДОТВРАТИТЬ запуск сценария до 6 минут.

Ответ №2:

Если есть несколько команд или выполняется повторно, то рекомендация мастера в комментариях является хорошей вещью, которую следует учитывать.

Вот как это будет выглядеть.

 function sampleFunction() {
  var startTime = Date.now();

  // do your thing, initialization, etc.

  while (true) {
    // do your thing, main process 

    // if 10 seconds is done
    if ((Date.now() - startTime) >= 10000)
      return;
  }
}
 

Ограничения:

  • Если команда перед проверкой условия if займет 5 минут, то вы сможете выйти из скрипта после этого выполнения, которое произойдет через 5 минут.
  • Вы не можете остановить ни одну команду в середине выполнения. Вам нужно дождаться выполнения вашего условия if.

Что следует отметить:

  • Выход из сценария с помощью описанного выше метода лучше всего работает, когда множество строк кода повторяются в цикле и последовательно проверяется условие if, чтобы вы могли выйти из сценария, когда придет время.
  • Вы можете выйти из сценария только между командами, а не во время этих команд. Таким образом, использование этого между командами, которые занимают слишком много времени, может остановить сценарий позже, чем ожидалось.
  • Все равно лучше всего отладить, что происходит и почему происходит эта «ОШИБКА«, или, возможно, вы пропустили что-то, что вызывает неожиданное поведение.

Предоставив точный код, сообщество сможет помочь вам с более конкретным ответом. До тех пор можно было только строить предположения.