【发布时间】:2020-02-16 23:22:14
【问题描述】:
您好,我希望将我在旧帖子中看到的这个函数编辑为更具动态性的功能,并且实际上可以填充右列的空白,因为现在它正在填充 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列中有名称在“D”、“H”、“J”、“L”、“N”、“P”列中标有P(因为它们存在) ,"R","T","V","X","Z","AB","AF","AH","AJ","AL","AN" 不在场的人留空,但当我通过按钮运行脚本时,我想用 A 填充它们。在这里你可以看到sheet. 下面的脚本是我首先运行的,将 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;
}
【问题讨论】:
-
我很乐意提供帮助。我可以看看你的工作表的图片吗?
-
@Cooper 我刚刚上传了一张它的图片。它也在帖子上链接。非常感谢!
-
这些列
"D","H","J","L","N","P","R","T","V","X","Z","AB","AF","AH","AJ","AL","AN"似乎与您的图像不一致。 -
您有当前出勤脚本的副本吗?
-
@Cooper 我不知道如何在此处将我的脚本作为评论发布,所以我只是将其添加到我的帖子中。另外,我很确定您命名的列确实匹配,因为那是我将 Ps 填充到其中的地方。希望这是有道理的
标签: if-statement google-apps-script google-sheets