使用带有if else语句的for循环

时间:2015-04-21 01:10:07

标签: google-apps-script google-sheets

我对此有点新意,我想知道我是否可以寻求帮助。我有点坚持这个功能我试图用googlescript创建。让我简单介绍一下我希望它如何工作。给定2个工作表,它会查看工作表中的数据集,如果(i,12)的值为Open,那么它将复制整行并将其粘贴到工作表4上的下一个空行(所以它抵消了1排)。如果值为Closed,则会继续评估下一个i。这将持续到最后一行,其中包含第1页中的值。

function UpdateList(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var dSheet = ss.setActiveSheet(ss.getSheets()[0]);
    var gSheet = ss.setActiveSheet(ss.getSheets()[3]);
    var lRow = dSheet.getLastRow();
    var lCol = dSheet.getLastColumn();
    var i
    var j = 1

    for (i = 0; i < lRow; i++) { 
        if (dSheet.getRange(i, 12).getValue() == "Open") { 
          dSheet.getRange(i,1,0,lCol).copyValuesToRange(gSheet.setRange(j,1))
        } else {

        }
    }
}

1 个答案:

答案 0 :(得分:1)

您正在使用getValue()在每个循环上获取单个单元格值。这会降低您的代码速度。获取整列数据,然后遍历数组。为此,您需要使用返回二维数组的getValues()。如果只从一列获取数据,那么每个内部数组只有一个元素。

对于单行或单列,获取外部数组的内部数组是不同的。如果你得到一行的2D数组,那么只有一个内部数组。

[[cell one, cell two, cell three, etc]]

在上面的2d数组中,只有一个内部数组。因此,只需使用索引零就可以轻松获取内部数组。

var innerArray = outerArray[0];

如果您从电子表格中获取一列数据,那么您将拥有大量内部数组。

[[one],[two],[three],[etc]]

在这种情况下,您无法简单地获得外部数组的零索引。在这种情况下,您可以有两个For循环,一个嵌套在另一个循环中。外部循环将获得每个内部数组,内部循环将获得内部数组的 内容