我有一个数据列表:
我编写了一个脚本,在找到包含该人姓名的行后,将该数据移动到我的数据库中,将日期放置在适当的列中。 我想调整我的脚本,以便它跳过第三列中没有日期的任何行。在我上面的示例中,它将更新 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;
}
}
}
}
Sheet.getDataRange().getValues().filter(r => r[2])