Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iterate over all problem sheets #2

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Code.gs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function createMenu(libName) {
if (libName.length != 0) libName = libName + '.'

ui.createMenu('Sheet Automation')
.addItem('Automate current sheet', `${libName}startScript`)
.addItem('Automate sheets', `${libName}startScript`)
.addSeparator()
.addItem('Set Handles', `${libName}setHandles`)
.addToUi();
Expand Down Expand Up @@ -45,9 +45,9 @@ function setHandles() {

metaDataSheet.setName("Script:MetaData");

metaDataSheet.getRange(1, 1, 1, 2).setValues([["Don't change/delete this metadata", '']]).setHorizontalAlignment("center").merge().setBackgroundRGB(255,0,0)
metaDataSheet.getRange(2, 1, 1, 2).setValues([['CF Handle', 'UVA Handle']]).setHorizontalAlignment("center").setBackgroundRGB(255,255,0)
metaDataSheet.getRange(3, 1, 1, 2).setValues([[cfHandle, uvaHandle]]).setHorizontalAlignment("center")
metaDataSheet.getRange(1, 1, 1, 3).setValues([["Don't change/delete this metadata", '']]).setHorizontalAlignment("center").merge().setBackgroundRGB(255,0,0)
metaDataSheet.getRange(2, 1, 1, 3).setValues([['CF Handle', 'UVA Handle','Problems Sheet Name (Seperated by ',')']]).setHorizontalAlignment("center").setBackgroundRGB(255,255,0)
metaDataSheet.getRange(3, 1, 1, 3).setValues([[cfHandle, uvaHandle,'A,B,C1,C2,D1,D2,D3']]).setHorizontalAlignment("center")

const maxRows = metaDataSheet.getMaxRows();
const lastRow = metaDataSheet.getLastRow();
Expand Down
53 changes: 30 additions & 23 deletions StartScript.gs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ function startScript() {

if (sheet == null) {
guide()
sheet = SpsetHandlesheetApp.getActiveSpreadsheet().getSheetByName('Script:MetaData')
sheet = SpsetHandlesheetApp.getActiveSpreadsheet().getSheetByName('Script:MetaData')
if (sheet == null) return;
}
var sheetNames = sheet.getRange(3, 3).getValue().toString().split(',');

const lastRow = sheet.getLastRow()

Expand All @@ -24,7 +25,9 @@ function startScript() {
const cfSubmissions = fetchCFSubmissions(cfHandle)
const uvaSubmissions = fetchUVASubmissions(uvaHandle)

setStatusColumn(cfSubmissions, uvaSubmissions)
setStatusColumn(cfSubmissions, uvaSubmissions, sheetNames)

//createAnalysis();
}

/*
Expand All @@ -33,28 +36,30 @@ function startScript() {
@params cfSubmissions: Map of user's Codeforces submissions
@params uvaSubmissions: Map of user's UVA submissions
*/
function setStatusColumn(cfSubmissions, uvaSubmissions) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var sourceRange = sheet.getRange(1, 2, sheet.getLastRow());

solvedToday = 0
var sourceData = sourceRange.getFormulas();
for (row in sourceData) {
var data = sourceData[row][0].toString()

const matcher = data.match(/"[^,]+"/g)
if (matcher == null) continue

const url = matcher[0]
if (!url.includes("codeforces") && !url.includes("uva")) continue

const problemId = getProblemIdFromUrl(url)
const result = getResultFromProblemId(problemId, cfSubmissions, uvaSubmissions)
sheet.getRange(parseInt(row) + 1, 3, 1, 2).setValues([result]).setHorizontalAlignment("center")
//sheet.getRange(parseInt(row) + 1, 3).setRichTextValue(result[0]).setHorizontalAlignment("center")
//sheet.getRange(parseInt(row) + 1, 4).setValue(result[1]).setHorizontalAlignment("center")
function setStatusColumn(cfSubmissions, uvaSubmissions, sheetNames) {
for (var i = 0; i < sheetNames.length; ++i) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetNames[i])
var sourceRange = sheet.getRange(1, 2, sheet.getLastRow());

solvedToday = 0
var sourceData = sourceRange.getFormulas();
for (row in sourceData) {
var data = sourceData[row][0].toString()

const matcher = data.match(/"[^,]+"/g)
if (matcher == null) continue

const url = matcher[0]
if (!url.includes("codeforces") && !url.includes("uva")) continue

const problemId = getProblemIdFromUrl(url)
const result = getResultFromProblemId(problemId, cfSubmissions, uvaSubmissions)
sheet.getRange(parseInt(row) + 1, 3, 1, 2).setValues([result]).setHorizontalAlignment("center")
//sheet.getRange(parseInt(row) + 1, 3).setRichTextValue(result[0]).setHorizontalAlignment("center")
//sheet.getRange(parseInt(row) + 1, 4).setValue(result[1]).setHorizontalAlignment("center")
}
sheet.getRange(2, 1).setValue(`Solved today: ${solvedToday}`)
}
sheet.getRange(2, 1).setValue(`Solved today: ${solvedToday}`)
}

/*
Expand Down Expand Up @@ -91,11 +96,13 @@ function getResultFromProblemId(problemId, cfSubmissions, uvaSubmissions) {
if (verdict == 'AC') isAccepted = true
verdict = `=HYPERLINK("${submissionsLink}","${verdict}")`;
//verdictWithLink = SpreadsheetApp.newRichTextValue().setText(verdict).setLinkUrl(submissionsLink).build();
//analysisTimestamps.push(timestamp);
} else if (uvaSubmissions.has(problemId)) {
count = uvaSubmissions.get(problemId).count
verdict = uvaSubmissions.get(problemId).verdict
if (verdict == 'AC') isAccepted = true
timestamp = uvaSubmissions.get(problemId).timestamp
//analysisTimestamps.push(timestamp);
}

if (isAccepted && isSolvedToday(timestamp)) solvedToday++
Expand Down