跳过没有数据的行

问题描述 投票:0回答:1

我有一个数据列表:

数据列表截图

我编写了一个脚本,在找到包含该人姓名的行后,将该数据移动到我的数据库中,将日期放置在适当的列中。 我想调整我的脚本,以便它跳过第三列中没有日期的任何行。在我上面的示例中,它将更新 Brad 和 Chris 的记录,跳过 Dana 更新 David,跳过 Gabi 并更新 Jacob。

正如我现在所写的,在添加日期之前,程序每条记录需要大约 20 秒的时间来搜索现有数据库。由于列表通常包含 40-50 个姓名,其中只有 4 或 5 个姓名有日期,如果我可以让它跳过空行,这可以减少脚本的运行时间。

下面是我现在的脚本 - 这可以工作,但如上所述,它会查找数据库中列表中的每个名称,并且需要 5 分钟以上的时间才能运行。

function datesFASigned() {
      var data4RUSS = SpreadsheetApp.getActiveSpreadsheet(); // Set variable for Google Sheet
      var shDates = data4RUSS.getSheetByName("Live to RUSS"); //Set variable for Franchise Data
      var listLength = shDates.getRange("J4").getValue(); // Set variable for length of FDD list
      let listRange = shDates.getSheetValues(4,5,listLength,3); // Set range for Can Sign FA List

      var toRUSS = SpreadsheetApp.openById("1H--DhiSVjDnhVV8xYCD-H1QJOrTcML33GG05nzrAXN0");
      var dataEntry = toRUSS.getSheetByName("Data Entry"); //Data Entry tab on RUSS
  

    for (var a = 5; a <= listLength+4; a++) //formula to advance through class roster
    {
       var PPAD       = shDates.getRange(a,9).getValue(); //Set variable for Emp roster 
       console.log(PPAD);
       var values = dataEntry.getDataRange().getValues(); //getting the entire values from Emp Data    range and assigning it to values variable
    

        for (var i = 0; i < values.length; i++) // formula to search Emp Data for Emp Name in column CP
     {
       var rowValue = values[i]; // declaring the data row as a variable

       //checking the first value of the record is equal to search item
        if (rowValue[0] == PPAD) {

         var  iRow = i+1; //identify the row number
         console.log(iRow)
 
         dataEntry.getRange(iRow, 43).setValue(shDates.getRange(a,12).getValue()); //Date ppAD  Signed FA

       valuesFound=true;


          }

      }

    }

    }
database google-sheets google-apps-script
1个回答
0
投票

Sheet.getDataRange().getValues().filter(r => r[2])

© www.soinside.com 2019 - 2024. All rights reserved.