public void Test1() { var credentialDirPath = Environment.GetEnvironmentVariable(CredentialsEnvVar); var credentialPath = credentialDirPath + "\\client_secrets.json"; var url = "https://docs.google.com/spreadsheets/d/1-CFNA5rFSKmrs5jdJm5xg2b1cQDbCJ8LA1FRrdBBRyg/edit#gid=1607674973"; var repo = new GSRepository(ApplicationName, credentialPath, url); var requisitions = SheetToRequisitionConverter.ConvertToRequisitions(repo, "Requisition", "Plan"); }
public static (List <RequisitionItem>, LearningPlan) ConvertToRequisitions(GSRepository repo, string requisitionSheetName, string learningPlanSheetName) { var PlanData = SheetTableReader.ReadRowsFromSheet(repo, learningPlanSheetName, (1, 0), 6); var(planItemsAndLocations, allGroups) = ParseLearningPlanItems(PlanData); var learningPlanItems = planItemsAndLocations.Select(x => x.Item1).ToArray(); var learningPlan = new LearningPlan(learningPlanItems); var RequestionData = SheetTableReader.ReadRowsFromSheet(repo, requisitionSheetName, (1, 0), 7); var requisitions = ParseRequisitions(RequestionData, planItemsAndLocations, allGroups); return(requisitions, learningPlan); }
public void PaintErrorsWhenNoMergerCells() { var credentialDirPath = Environment.GetEnvironmentVariable(CredentialsEnvVar); var credentialPath = credentialDirPath + "\\client_secrets.json"; var repo = new GSRepository(ApplicationName, credentialPath, url); var errors = new List <((int, int), string)>() { ((0, 0), "error msg1"), ((1, 1), "error msg2"), ((4, 2), "error msg3") }; SheetTableErrorPainter.PaintErrors(repo, sheetName, (1, 0), errors); Assert.Pass(); }
public void Test1() { var testSchedule = new Schedule(new[] { MeetingCreator.CreateMeeting("Math 623 Fil 0 3 0 0 FT-202#0 FT-201#0 KN-201#2"), MeetingCreator.CreateMeeting("DM 622 Str 0 0 0 0 FT-202#0 KN-201#0"), MeetingCreator.CreateMeeting("OOP 526 Eg 0 2 0 0 FT-202#1 FT-202#0 FT-201#1 FT-201#2"), MeetingCreator.CreateMeeting("Net 150 Ber 0 1 1 0 FT-202#0"), MeetingCreator.CreateMeeting("Net 150 Ber 0 1 0 0 FT-201#1"), }); var credentialDirPath = Environment.GetEnvironmentVariable(CredentialsEnvVar); var credentialPath = credentialDirPath + "\\client_secrets.json"; var url = "https://docs.google.com/spreadsheets/d/1JxL_CTuc-NLaBRdY5F4vz3yn6WJe8bp-7Mn7ViycjtQ/edit#gid=0"; var repo = new GSRepository(ApplicationName, credentialPath, url); var converter = new ScheduleSpreadsheetConverter(repo, repo.CurrentSheetInfo.Sheets.Keys.First()); converter.Build(testSchedule); Assert.Pass(); }
public void PaintErrorsAndClear() { var credentialDirPath = Environment.GetEnvironmentVariable(CredentialsEnvVar); var credentialPath = credentialDirPath + "\\client_secrets.json"; var repo = new GSRepository(ApplicationName, credentialPath, url); var errors = new List <((int, int), string)>() { ((0, 0), "error msg1"), ((1, 1), "error msg2"), ((4, 2), "error msg3") }; SheetTableErrorPainter.PaintErrors(repo, sheetName, (5, 0), errors); var coordsToClear = errors.Select(e => e.Item1); SheetTableErrorPainter.ClearErrorPaint(repo, sheetName, (5, 0), coordsToClear); Assert.Pass(); }
public void Test1() { var ApplicationName = "MyApp"; var credentialDirPath = Environment.GetEnvironmentVariable("GoogleApiCredentials"); var credentialPath = credentialDirPath + "\\client_secrets.json"; var url = "https://docs.google.com/spreadsheets/d/1ncJ77JJJapPJpTeDpvWIsmuavStz5aXwQLs7fc89Rgo/edit#gid=0"; var repo = new GSRepository(ApplicationName, credentialPath, url); repo.ChangeTable(url); var readed = repo.ReadCell(repo.CurrentSheetInfo.Sheets.Keys.First(), (1, 1)); var dataToWrite = new List <List <string> >() { new List <string>() { "11", "12" }, new List <string>() { "21", "22" }, new List <string>() { "31", "32" }, }; repo.ModifySpreadSheet(repo.CurrentSheetInfo.Sheets.Keys.First()) .WriteRange((1, 2), dataToWrite) .Execute(); var valRange = repo.ReadCellRange(repo.CurrentSheetInfo.Sheets.Keys.First(), (1, 2), (3, 4)); for (int r = 0; r < valRange.Count; r++) { for (int c = 0; c < valRange[r].Count; c++) { Assert.AreEqual(dataToWrite[r][c], valRange[r][c]); } } }
public void SetUpHeadersOnClearSheet() { var credentialDirPath = Environment.GetEnvironmentVariable(CredentialsEnvVar); var credentialPath = credentialDirPath + "\\client_secrets.json"; var repo = new GSRepository(ApplicationName, credentialPath, url); var headers = new List <string>() { "Преподавател", "Предмет", "Тип занятия", "Количество повторений каждого занятия", "Приоритеты групп, в которых назначать занятия", "Время", "Четность" }; var comments = new List <string>() { "Имя преподавателя", "Название предмета (например Матанализ)", "Лекция/Семинар/КомпПрактика", "Количество подряд идущих занятий с той же группой", @"через + объединяются группы в один поток. Через запятую те группы, в которые можно назначать. В разных строках можно задавать предпочтения - чем ниже, тем менее предпочтительно. Например: ФИИТ-101, ФИИТ-102 ФИИТ-103 означает, что хочу вести в 101 или 102, если не получится, то 103 тоже подойдет. 104 не предлагать.", @"варианты в строчках, по уменьшению желаемости. Список дней недели, список номеров пар. Например: пн-чт, 1-3 пара пт, 3-4 пара означает, что желательно пару не в пятницу поставить в диапазон 1-3. Если не получится, то поставить в пятницу 3 или 4.", "четная/нечетная (можно не указывать)" }; HeaderPatternCreator.SetUpHeaders(repo, sheetName, (5, 1), headers, comments); var actualHeaders = repo.ReadCellRange(sheetName, (5, 1), (5, 8))[0];
public static void SetUpHeaders(GSRepository repo, string sheetName, (int row, int col) start, List <string> headers, List <string> comments = null)
public static List <List <string> > ReadRowsFromSheet(GSRepository repo, string SheetName, (int row, int col) start, int width)
public static void PaintErrors(GSRepository repo, string sheetName, (int row, int col) offset, List <((int row, int col) coords, string msg)> errors)
public ScheduleSpreadsheetConverter(GSRepository repo, string sheetName) { repository = repo; this.sheetName = sheetName; }