Skip to content

Instantly share code, notes, and snippets.

@KnightsWhoSayNi0
Created September 4, 2024 15:06
Show Gist options
  • Save KnightsWhoSayNi0/9d71086dfe8d332f772dece103efc986 to your computer and use it in GitHub Desktop.
Save KnightsWhoSayNi0/9d71086dfe8d332f772dece103efc986 to your computer and use it in GitHub Desktop.
Inverse schedule excel script — oddly specific problem
function main(workbook: ExcelScript.Workbook)
{
const days = workbook.getWorksheet("days");
const out = workbook.getWorksheet("out");
const dayRange: ExcelScript.Range = days.getRange("A2:B71"); // first sem
const outRange: ExcelScript.Range = out.getRange(); // whole sheet
let outIndex = 1;
for (let i = 0; i <= 69; i++)
{
let day = parseInt(dayRange.getCell(i, 0).getText(); // parse day from iterated row
let date = dayRange.getCell(i, 1).getText();
if (day % 2)
{
newEvent(outRange, outIndex++, day, date, "8:30", "15:30");
} else
{
// i could make this much better by taking data from the schedule table but this is a 2 use thing so idc
switch (day)
{
case 2:
newEvent(outRange, outIndex++, day, date, "8:30", "11:35");
break;
case 4:
newEvent(outRange, outIndex++, day, date, "8:30", "10:15");
newEvent(outRange, outIndex++, day, date, "14:00", "15:30");
break;
case 6:
newEvent(outRange, outIndex++, day, date, "11:35", "15:30");
break;
case 8:
newEvent(outRange, outIndex++, day, date, "10:15", "14:00");
break;
}
}
}
}
function newEvent(outRange: ExcelScript.Range, index: number,
day: number, date: string, start: string, end: string)
{
outRange.getCell(index, 0).setValue("In School"); // title
outRange.getCell(index, 1).setValue("Day " + day); // desc
outRange.getCell(index, 2).setValue(date);
outRange.getCell(index, 3).setValue(start);
outRange.getCell(index, 4).setValue(end);
outRange.getCell(index, 5).setValue("4"); // show as busy
outRange.getCell(index, 6).setValue("School"); // category
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment