Простой для цикла Google Apps Script - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь написать очень простой цикл For в Google Apps Script, который действительно должен работать быстро.Однако, когда я выполняю его, выполнение занимает много времени, пока я не получу сообщение об ошибке, которое потребовало слишком много времени (Ошибка: Превышено максимальное время выполнения).

Код:

function myFunction() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var Sheet = ss.getActiveSheet();
  var LR = Sheet.getLastRow()

  for(var i=1;i=10;i++)

  {
   Logger.log(i);
  }

}

Я что-то не так делаю?Или мой скрипт Служб Google облажался?

1 Ответ

0 голосов
/ 19 сентября 2018

Ваш цикл никогда не заканчивается.

В вашем сценарии i=10 из for(var i=1; i=10; i++) должно быть condition.Но i=10 состоит в том, что он заменяет 10 на i.Поэтому, когда for(var i=1; i=10; i++) выполняется:

  1. В 1-м цикле он заменяет 10 на i.i становится 10.
    • 1 исходного значения заменяется на 10 на i=10.
  2. Во 2-м цикле это добавляет 1 к i.i становится 11.
  3. На 3-м цикле он заменяет 10 на i.i становится 10.
  4. В 4-м цикле это добавляет 1 к i.i становится 11.
  5. На 5-м цикле он заменяет 10 на i.i становится 10.

Решение:

Если вы хотите выполнить цикл от 1 до 10, как насчет изменения на подобное?

for (var i = 1; i <= 10; i++) {
  // do something
}

Кроме того, например, когда вы хотите выполнить цикл 10 раз, как насчет модификации, чтобы сделать это так?

for (var i = 0; i < 10; i++) {
  // do something
}

О выпуске:

Документация по Javascript forоператор описывает:

A для повторов цикла, пока указанное условие не станет ложным.Цикл JavaScript for похож на цикл Java и C for.Оператор for выглядит следующим образом:

for ([initialExpression]; [condition]; [incrementExpression])
  statement

При выполнении цикла for происходит следующее:

  1. Инициализирующее выражение initialExpression, если оно есть, выполняется.Это выражение обычно инициализирует один или несколько счетчиков цикла, но синтаксис допускает выражение любой степени сложности.Это выражение также может объявлять переменные.
  2. Выражение условия вычисляется.Если значение условия истинно, операторы цикла выполняются.Если значение условия равно false, цикл for завершается.Если выражение условия полностью опущено, условие считается истинным.
  3. Оператор выполняется.Чтобы выполнить несколько операторов, используйте оператор блока ({...}) для группировки этих операторов.Если присутствует, выполняется выражение update incrementExpression.Управление возвращается к шагу 2.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...