0

我的代码只是将数据从电子表格 A 添加到电子表格 B。在电子表格 A 有 21 行数据而电子表格 B 只有 20 行的情况下,我的脚本显然试图写入电子表格 B 中的一行不存在。所以脚本显然会自动添加 50 行来为多余的数据腾出空间。

当一行就足够时,有没有办法阻止它添加 50 行?

这通常不会打扰我……但电子表格 B 中有格式,它会自动复制到 50 行。当电子表格 B 发布到我们的网站时,这种格式看起来不正确。

这是我的代码。当rowCounterDTL变量超过电子表格 B 中存在的行数时,电子表格 B 中会自动添加 50 行。

//Cycle through each line item in the task log
for (var i = 0; i < dataTL.length; ++i) {

    //If the package type is Other
    if(dataTL[i][2] == "Other Item" && dataTL[i][4] == "Complete") {

      continue;

    } else if (dataTL[i][2] == "Other Item") {

      rowCounterDTL = rowCounterDTL + 1

      var daysOld = Math.round((todaysDate - dataTL[i][0])/1000/60/60/24);

      sheetDTL.getRange(rowCounterDTL,1).setValue(dataTL[i][1]); //Add the client ID to column 1 of the DTL
      sheetDTL.getRange(rowCounterDTL,2).setValue(dataTL[i][2]); //Add the package type to column 2 of the DTL
      sheetDTL.getRange(rowCounterDTL,3).setValue(dataTL[i][3]); //Add the package notes to column 3 of the DTL
      sheetDTL.getRange(rowCounterDTL,4).setValue(dataTL[i][4]); //Add the package priority to column 4 of the DTL
      sheetDTL.getRange(rowCounterDTL,5).setValue(daysOld); //Add the age to column 5 of the DTL

        if (daysOld>20){

            sheetDTL.getRange(rowCounterDTL,6).setValue("On Hold?");

        } else if(daysOld>7) {

            sheetDTL.getRange(rowCounterDTL,6).setValue("Max!");

        } else if (daysOld>4){

            sheetDTL.getRange(rowCounterDTL,6).setValue("High");

        } else if (daysOld>2){

            sheetDTL.getRange(rowCounterDTL,6).setValue("Moderate");

        } else if (daysOld<3){

            sheetDTL.getRange(rowCounterDTL,6).setValue("Low");

        }

      sheetDTL.getRange(rowCounterDTL,1,1,6).setBackgroundRGB(255, 121, 255)
    }

}
4

2 回答 2

0

假设你有这条线

for (var i = 0; i < dataTL.length; ++i) {在此逻辑上方的代码中,

问题出在++i. 正在发生的事情是,当您调用 ++i 时,它会在您的 for 循环中的语句开始之前将值增加 1。

取而代之for (var i = 0; i < dataTL.length; i++) {的是,您应该准备就绪。

将“++”放在后面,意味着您将在逻辑完成后将 i 加一。

于 2012-09-26T22:33:09.310 回答
0

你能先插入一个 if 语句来检查可用的行吗?

} else if (dataTL[i][2] == "Other Item") {
  if (rowCounterDTL == sheetDTL.getMaxRows()) {
    sheetDTL.insertRowAfter(rowCounterDTL);
  }
  rowCounterDTL = rowCounterDTL + 1
于 2012-09-27T00:29:25.167 回答