Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romanow/google-sheet-autograder-marker
Github Action for mark autograding results in Google Sheet
https://github.com/romanow/google-sheet-autograder-marker
github-actions github-classroom google-sheets typescript
Last synced: 5 days ago
JSON representation
Github Action for mark autograding results in Google Sheet
- Host: GitHub
- URL: https://github.com/romanow/google-sheet-autograder-marker
- Owner: Romanow
- License: mit
- Created: 2022-05-01T22:47:03.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-09-13T15:53:40.000Z (over 2 years ago)
- Last Synced: 2024-12-17T05:47:06.728Z (about 1 month ago)
- Topics: github-actions, github-classroom, google-sheets, typescript
- Language: TypeScript
- Homepage:
- Size: 1.06 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Google Sheet auto grader
## Задача
Автоматически отмечаем `+` в таблице Google Sheet при успешном прохождении тестов.
На вход имеем таблицу:
| # | Фамилия Имя | Контакты | Github | ... |
|---|-------------------|--------------|-----------|-----|
| 1 | Романов Алексей | @romanowalex | romanow | ... |
| 2 | Иванов Иван | @notexisting | ivanov | ... |
| 3 | Сидоренко Николай | @sidorenko | sidorenko | ... |По имени пользователя ищем строку, но номеру лабораторной вычисляем столбец.
## Использование
```yaml
- uses: romanow/[email protected]
with:
sheet_id: ""
google_token: ""
homework_number: 1
user_column: "D"
column_offset: "F"
mark: "'+"
```## Реализация
#### Входные данные
| Название | Тип | Описание | Обязательность | Значение по-умолчанию |
|-----------------|:------:|-------------------------------|:--------------:|:---------------------:|
| sheet_id | string | ID таблицы в Google Sheet | + | |
| google_token | string | Google Service token | + | |
| homework_number | number | Номер работы | + | |
| mark | string | Отметка | - | + |
| user_column | string | Номер колонки с пользователем | - | D |
| column_offset | string | Базовое смещение колонки | - | F |#### Алгоритм выполнения
1. Google API key получаем через параметры action. Регистрируем как JWT.
2. Пользователя, который запустил сборку, получаем из `github_user`, который [подставляется в default](action.yml) как
параметр Github Context (`${{ github.actor }}`).
3. Запрашиваем строки 1:100 в колонке `user_column`, в полученных данных ищем пользователя. Если нашли, то получаем
индекс строки `row`.
4. По номеру лабораторной работы `homework_ number` и базового смещения `column_offset` вычисляем номер колонки
`column`, в которой нужно поставить отметку.
5. Ставим отметку `mark` в строке `row` из п.3 и колонке `column`.#### Google Service Account
1. Зайти в Google Cloud Platform -> [Manage Resources](https://console.cloud.google.com/cloud-resource-manager) ->
Create Project: Github Classroom Autograder.
2. [Manage Service Account](https://console.cloud.google.com/iam-admin/serviceaccounts) -> Create Service Account.
Использовать роль Viewer.
3. [Включить Google Sheet API](https://console.cloud.google.com/apis/api/sheets.googleapis.com/overview) для Github
Classroom Autograder.
4. Создать Credentials для Service Account: `Credetials` -> `Service Accounts` -> `Keys` -> `Add Key` -> `Create new key`: JSON -> `Create`.
5. Будет скачан файл в фомате `json`, все содержимое этого файла добавить как Organization Secret с именем `GOOGLE_API_KEY`.
6. Добавить Service Account (email) как редактора в Google Sheet.Создание Service Account описано [здесь](https://developers.google.com/identity/protocols/oauth2/service-account).