Привет! Я хочу отредактировать эту функцию, которую я видел в более старом сообщении, чтобы что-то более динамичное c и могло фактически заполнить пробелы в правом столбце, поскольку сейчас оно заполняет столбец B вместо пробелов в D. Вот функция, которую я имею
function Absent() {
var tss = SpreadsheetApp.getActiveSpreadsheet();
var values = tss.getRange("Attendance!D1:D20").getValues();
for(i=0; i<values.length; i++) {
var value = values[i][0];
if (value == "") {
var rangeB = tss.getSheetByName("Attendance").getRange(i+1,2);
if(!rangeB.isBlank()) {
rangeB.setValue("A");
}
}
}
}
В настоящее время у меня есть ситуация, что есть имена в столбце A, которые помечены буквой P (потому что они присутствует) в столбцах «D», «H», «J», «L», «N», «P», «R», «T», «V», «X», «Z», «AB». "," AF "," AH "," AJ "," AL "," AN "Люди, которых там нет, оставлены пустыми, но я хотел бы заполнить их буквой A, когда я запускаю сценарий через кнопку. Здесь вы можете увидеть лист . Сценарий ниже - это то, что я запускаю первым, чтобы добавить Ps всем присутствующим, но я не уверен, как редактировать, куда после добавления P он возвращается и если имя не найдено поставить A, поэтому я делаю второй сценарий. Но если есть способ просто добавить его к этому, это было бы здорово!
var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
var transpose = sprsheet.getSheetByName("Transpose");
var attendance = sprsheet.getSheetByName("Attendance");
//Ranges of Transpose
var colDates = transpose.getRange("D1:BU1").getValues();
var attendees = transpose.getRange("D2:BU2").getValues();
//Ranges of Attendance
var eventsCol = ["D","H","J","L","N","P","T","V","X","Z","AB","AF","AH","AJ","AL","AN","AR","AT","AV","AX","AZ","BD","BF","BH","BJ","BL","BP","BR","BT","BV","BX","BZ"]; //Add Column letters is need more dates added
var kids = attendance.getRange("A2:A205").getValues(); //Increase this if you add more names
loop1:
for (var i = 0; i < eventsCol.length; i++){ //For each column
var list = getIndividuals(attendees[0][i]); //Get the list of each Transpose row 2
loop2:
for (var x = 0; x < kids.length; x++){ //For each name in Attendance
loop3:
for (var y = 0; y < list.length; y++){ //Compare it with each name of the list
if (list[y] == kids[x][0] || list[y] == " " + kids[x][0]){ //Second "or" is in case there is an space in the first position.
attendance.getRange(eventsCol[i]+(x+2)).setValue("P");
break loop3; //Once it finds a name it makes no sense to keep searching. Go back to the next name.
}
}
}
}
}
//Split the list into each name, removing the first space
function getIndividuals(attendees){
var individuals = attendees.split(",");
for (var i = 0; i < individuals.length; i++){
if (individuals[i][0] == " "){
individuals[i][0].replace(" ", "");
}
}
return individuals;
}