How do I Retrieve or Use Column Names By Their Title
f
Please who can update this code, so that column names are retrieved by their titles //and not by their letters, so that script can be maintanable and efficients...
Thank you
function doGet(e) {
return HtmlService.createTemplateFromFile("index")
.evaluate() .setTitle("ExcelSchools")
;
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function getOrdinal(n) { if (n === 0) { return "NIL"; // Handle the case when the rank is 0 }my g
if (n % 100 >= 11 && n % 100 <= 13) {
return n + "th"; // Special case for 11th, 12th, and 13th
}
var suffixes = ["th", "st", "nd", "rd"];
var suffix = n % 10 < 1 || n % 10 > 3 ? suffixes[0]: suffixes[n % 10];
return n + suffix;
}
function letterToColumn(letter) { var column = 0; var length = letter.length; for (
var i = 0; i < length;
i++) {
column += (letter.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
}
return column;
}
function calculateRemark(obtainedScore) { if (obtainedScore === "NIL") { return "NIL"; } else if (obtainedScore >= 75 && obtainedScore <= 100) { return "A1"; } else if (obtainedScore >= 70 && obtainedScore <= 74) { return "A2"; } else
if (obtainedScore >= 60 && obtainedScore <= 69) {
return "B";
} else if (obtainedScore >= 50 && obtainedScore <= 59) { return "C"; } else if (obtainedScore >= 40 && obtainedScore <= 49) { return "D"; } else {
return "F";
}
}
function sub(v) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = ss.getSheetByName("Sheet1"); var sheet2 = ss.getSheetByName("Sheet2"); var flag = 1;
var lr1 = sheet1.getLastRow(); var lr2 = sheet2.getLastRow();
var data = ""; Declare and initialize the 'data' variable
var recipientEmail = ""; Declare the recipient's email address variable
var ccEmails = ""; Declare the CC email addresses variable as a comma-separated string
var bccEmails = ""; Declare the BCC email addresses variable as a comma-separated string
// Initialize arrays for subjects, obtained scores, and maximum scores
var subjectsSheet1 = ["English", "Chemistry", "Biology", "Economics", "Geography", "ICT", "Mathematics", "Igbo", "Government", "Marketing", "Crs", "Physics", "Literature", "Animal-Husbandry", "Civic Education", "Agricultural Science"];
var subjectsSheet2 = ["MATHEMATICS", "ENGLISH", "CRK", "CULTURAL&CREATIVE ARTS", "IGBO", "PRE-VOCATIONAL STUDIES", "BUSINESS STUDIES", "BASIC SC&TECHNOLOGY", "HISTORY", "French", "National Values"]; Updated subjects for Sheet2
for (var i = 2; i <= lr1; i++) {
if (v.roll == sheet1.getRange(i, 1).getValue()) {
flag = 0;
// Fetch the recipient's email address from Sheet1 based on the roll number
recipientEmail = sheet1.getRange(i, 25).getValue(); Assuming the email is in column Y
// Fetch CC and BCC email addresses from columns Z and AA in Sheet1
ccEmails = sheet1.getRange(i, letterToColumn("Z")).getValue() || "";
bccEmails = sheet1.getRange(i, letterToColumn("AA")).getValue() || "";
// Fetch other values from Sheet1
var tt = sheet1.getRange(1, 2).getValue(); Title
var h1 = sheet1.getRange(1, 3).getValue(); Maximum Total Score (assuming it's the same as in Sheet2) var b1 = sheet1.getRange(i, 2)
.getValue(); Name
var class1 = sheet1.getRange(i, letterToColumn("X")).getValue(); Class
// Add date and time to column T (Validate)
var now = new Date();
var formattedDate = Utilities.formatDate(now, "GMT+1", "dd/MM/yyyy HH:mm:ss");
sheet1.getRange(i, letterToColumn("T")).setValue(formattedDate);
// Fetch the rank from column W for the current student
var rank = getOrdinal(sheet1.getRange(i, letterToColumn("W")).getValue()); Assuming rank is in column W (adjust the column number accordingly)
// Create an HTML table for Sheet1 with improved styling
data = '<table style="border-collapse: collapse; width: 100%; text-align: center;" ><thead><tr style="background-color: #f2f2f2;" ><th style="border: 1px solid #ddd; padding: 8px;" ><img src="im>" height="100px" width="100px"></th><th colspan="' + (subjectsSheet1.length + 1) + '" class="custom-header"><h4>' + tt + '</h4></th></tr></thead><tbody><tr><td style="border: 1px solid #ddd; padding: 8px;" >Roll No.</td><td style="border: 1px solid #ddd; padding: 8px;" >' + v.roll + '</td><td style="border: 1px solid #ddd; padding: 4px;" colspan="2">Name: ' + b1 + '</td><td style="border: 1px solid #ddd; padding: 8px;" colspan="2">Class: ' + class1 + '</td></tr><tr><td colspan="' + (subjectsSheet1.length + 1) + '" style="border: 1px solid #ddd; background-color: #f2f2f2; padding: 8px;" >Results:</td></tr><tr><td style="border: 1px solid #ddd; padding: 8px;" >S/N</td><td style="border: 1px solid #ddd; padding: 8px;" >Subjects</td><td style="border: 1px solid #ddd; padding: 8px;" >Maximum score</td><td style="border: 1px solid #ddd; padding: 8px;" >CutOff Score</td><td style="border: 1px solid #ddd; padding: 8px;" >Obtained Score</td><td style="border: 1px solid #ddd; padding: 8px;" >Remarks</td></tr>';
// Initialize the variable to store the sum of obtained scores
var totalObtainedScore = 0;
for (var l = 0; l < subjectsSheet1.length; l++) { var subject = subjectsSheet1[l]; var maxScore = 100;
// Maximum score is set to 100
}
}