简单的 For 循环 Google Apps 脚本

Oda*_*lim 0 google-sheets google-apps-script

我正在尝试在 Google Apps 脚本中编写一个非常基本的 For 循环,它确实应该运行得很快。但是,当我执行它时,需要很长时间才能运行,直到出现运行时间太长的错误(错误:超出最大执行时间)。

代码是:

function myFunction() {

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

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

  {
   Logger.log(i);
  }

}
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?还是我的 Google Apps 脚本搞砸了?

Tan*_*ike 5

你的循环永远不会结束。

在您的脚本中,i=10offor(var i=1; i=10; i++)必须是condition。但i=10它是10替代i. 因此,何时for(var i=1; i=10; i++)运行:

  1. 在第一个循环中,它10替换i. i变成10.
    • 初始值的 1 被替换10i=10
  2. 在第二个循环中,它添加1i. i变成11.
  3. 在第三个循环中,它10替换i. i变成10.
  4. 在第四次循环时,它添加1i. i变成11.
  5. 在第 5 个循环中,它替换10i. i变成10.

解决方案:

当你想从1循环到10时,修改成这样怎么样?

for (var i = 1; i <= 10; i++) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

另外,比如你想循环10次,修改成这样怎么样?

for (var i = 0; i < 10; i++) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

关于问题:

forJavascript语句的文档描述如下:

for 循环会重复执行,直到指定条件的计算结果为 false。JavaScript 的 for 循环与 Java 和 C 的 for 循环类似。for 语句如下所示:

for ([initialExpression]; [condition]; [incrementExpression])
  statement
Run Code Online (Sandbox Code Playgroud)

当执行 for 循环时,会发生以下情况:

  1. 执行初始化表达式initialExpression(如果有)。该表达式通常会初始化一个或多个循环计数器,但语法允许使用任何复杂程度的表达式。该表达式还可以声明变量。
  2. 条件表达式被求值。如果条件的值为 true,则执行循环语句。如果条件的值为假,则 for 循环终止。如果完全省略条件表达式,则假定条件为真。
  3. 语句执行。要执行多个语句,请使用块语句 ({ ... }) 对这些语句进行分组。如果存在,则执行更新表达式incrementExpression。控制返回到步骤 2。