Here is some code that I use for GoogleScript to send a message back to students with their math work. In particular, line 48 is x<sup>2</sup>
and I want it to be in MathJax formatting \(x^2\)
where the PDF sent back to students is sent so that 2 is actually in the exponent. I feel like there has to be something else added to have line 48 work. Simply changing it to MathJax leaves it in the MathJax format and does not render it so that 2 is in the exponent.
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('index');
}
var FEEDBACK_SENT = 'FEEDBACK_SENT';
function AddRecord(fullname, email, blankemail, score, ...array) {
var ss = SpreadsheetApp.getActive();
var ws = ss.getSheetByName("Sheet1");
ws.appendRow([fullname, email, blankemail, score, ...array, new Date()]);
sendEmail(array);
}
var EMAIL_SENT = 'EMAIL_SENT';
/**
* Sends non-duplicate emails with data from the current spreadsheet.
*/
function sendEmail(array) {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 4).setValue("Score");
var startRow = 1; // First row of data to process
var startColumn = 1;
var numRows = sheet.getLastRow(); // Number of rows to process
var numColumns = sheet.getLastColumn(); // Number of rows to process
var numQuestions = array.length; // Number of Questions Asked on Assessment
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, startColumn, numRows, numColumns);
// Fetch values for each row in the Range.
var [header, ...data] = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[1]; // First column
var message = row[0] + "," + "n" + "n" + "Below is feedback on your assessment.";
var n = 0;
for (var j = 4; j < numQuestions + 4; ++j) {
var k = j - 3;
if (header[j] != row[j]) {
row[j] = row[j] + " (Incorrect)";
n = n + 1;
}
message = message + "n" + "Question #" + k + ": " + row[j];
}
message = message + "n" + "n" + "Number of Questions Incorrect: x<sup>2</sup> " + n;
// Proficiency
if (0 <= n && n <= 0) {
sheet.getRange(startRow + i + 1, 2 + 2).setValue(4.0);
}
if (1 <= n && n <= 1) {
sheet.getRange(startRow + i + 1, 2 + 2).setValue(3.0);
}
if (2 <= n && n <= 2) {
sheet.getRange(startRow + i + 1, 2 + 2).setValue(2.0);
}
if (3 <= n && n <= 3) {
sheet.getRange(startRow + i + 1, 2 + 2).setValue(1.0);
}
if (4 <= n) {
sheet.getRange(startRow + i + 1, 2 + 2).setValue(0.0);
}
message = message + "n" + "n" + "Your score is a " + sheet.getRange(startRow + i + 1, 2 + 2).getValue() + ".n";
var emailSent = row[2]; // Third column
if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
var subject = 'AI Generated Exponent Assessment (Score)';
var pdf = createPDF(message, row[0]);
MailApp.sendEmail({
to: emailAddress,
subject: subject,
body: "Please find attached the feedback on your assessment.",
attachments: [pdf]
});
sheet.getRange(startRow + i + 1, 2 + 1).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
function createPDF(content, studentName) {
var htmlContent = convertToHTML(content);
var pdfBlob = HtmlService.createHtmlOutput(htmlContent).getAs('application/pdf').setName(studentName + '_Assessment_Feedback.pdf');
return pdfBlob;
}
function convertToHTML(content) {
return `
<!DOCTYPE html>
<html>
<head>
<title>Assessment Feedback</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body>
<pre>${content.replace(/n/g, '<br>')}</pre>
</body>
</html>
`;
}