Googleスプレッドシート製AtCoder Virtual Contest作成シートの使い方

世の中にはAtCoderのバーチャルコンテストを作成してくれるWebサービスが沢山ありますが、

- 参加者ログをスプレットシートで管理して集計したい
- バーチャルコンテスト情報をプライベートで管理したい

というニーズがあるんじゃないかと思います。

そんなニーズ向けにGoogleスプレッドシートのGASを使ったAtCoder Virtual Contest作成シートを作っており、N高等学校のコンピュータ部内で運用していましたので、その[シート](https://docs.google.com/spreadsheets/d/1yHoXlUbdys4Bfgsgjm50s_58wB1aZwpkfcgKnb-LuCM/edit?usp=sharing)と使い方および[ソースコード](https://github.com/sifue/virtual_contest_maker)を公開します。

| ![スクリーンショット 2018-08-20 16.50.26.png](https://qiita-image-store.s3.amazonaws.com/0/2382/827389e8-f17f-6a34-bd49-59c181763eb5.png) |
| --- |
| AtCoder Virtual Contest作成シートの見た目 |


# コンテストの作り方
Googleアカウントにログインして

https://docs.google.com/spreadsheets/d/1yHoXlUbdys4Bfgsgjm50s_58wB1aZwpkfcgKnb-LuCM/edit?usp=sharing

以上のURLにアクセスし、ファイル > コピーを作成を選択します。

| ![スクリーンショット 2018-08-20 16.54.39.png](https://qiita-image-store.s3.amazonaws.com/0/2382/b4ca25c6-f5b2-0ea6-0a62-1e403d9f55c7.png) |
| --- |
| コピーを作成...を選択 |

- コンテスト名
- AtCoderコンテストID (大会URLの最後"/"以降のパス名)
- 開始時刻
- 終了時刻

以上を入力して、コンテスト作成ボタンを押します。

| ![スクリーンショット 2018-08-20 16.58.29.png](https://qiita-image-store.s3.amazonaws.com/0/2382/dcb30f41-3465-8834-7115-e027c279587f.png) |
| --- |
|「新しいコンテストの作成」ボタンをクリック |

するとスクリプトの承認が求められますので、

| ![スクリーンショット 2018-08-20 16.08.23.png](https://qiita-image-store.s3.amazonaws.com/0/2382/0de8c091-e6ba-cac3-4ae1-32e81f33036e.png) |
| --- |
|「続行」ボタンをクリック |

「続行」ボタンを押します。

|![スクリーンショット 2018-08-20 16.59.15.png](https://qiita-image-store.s3.amazonaws.com/0/2382/b1c00212-a82b-807a-d150-1264d993e290.png)|
| --- |
|「承認するアカウント」を選択 |


|![スクリーンショット 2018-08-20 17.01.06.png](https://qiita-image-store.s3.amazonaws.com/0/2382/ac4b5fe0-9e0a-3727-edc4-463a08f00132.png)|
| --- |
|「詳細」のリンクをクリック |


|![スクリーンショット 2018-08-20 17.01.25.png](https://qiita-image-store.s3.amazonaws.com/0/2382/7a78b236-897c-3fe8-7b5a-427739e16910.png)|
| --- |
|「Virtual Contest作成シート用スクリプト (安全ではないページ)に移動」のリンクをクリック |


|![スクリーンショット 2018-08-20 17.02.04.png](https://qiita-image-store.s3.amazonaws.com/0/2382/11606b38-b5f3-63f1-7083-aa9e8eb2e46b.png)|
| --- |
|「許可」ボタンをクリック |


するとコンテストが作成されます。

|![スクリーンショット 2018-08-20 17.02.34.png](https://qiita-image-store.s3.amazonaws.com/0/2382/8ce5e561-141b-0f13-9869-867db08fbbd3.png)|
| --- |
| コンテストが作成された状態 |


これでコンテストの作成は完了です。同じシートで何個もコンテストを作成することができます。

次の他の人が参加できるように共有から、コンテストに参加させたい範囲の方に編集権を与えるように設定します。

|![スクリーンショット 2018-08-20 17.28.02.png](https://qiita-image-store.s3.amazonaws.com/0/2382/d666d3ec-a3f3-ad09-776b-d367c3a7ba30.png)|
| --- |
|共有ボタンより「変更...」のリンククリック |


|![スクリーンショット 2018-08-20 17.28.44.png](https://qiita-image-store.s3.amazonaws.com/0/2382/886ad13e-51ba-c582-03f8-95c2247d6715.png)|
| --- |
|「リンクを知っている人全員」、「編集者」に設定 |

ここでは、リンクを知っている全員が参加できるように「編集者」に設定しました。なお、特定の人にだけ参加させたい場合には、特定のユーザーを選択して、メールアドレスで招待を送っていきます。

|![スクリーンショット 2018-08-20 17.31.43.png](https://qiita-image-store.s3.amazonaws.com/0/2382/21095942-281f-7f84-4e24-2c553ba2f717.png)|
| --- |
| 参加者に共有するリンク |

その後、共有するリンクを大会の参加者に共有するようにどこかにコピペしてメモをとっておき、「完了」ボタンをクリックして完了となります。あとは参加者にこのURLを共有しましょう。

# 作成したバーチャルコンテストへの参加

コンテストのシートを開いてもらい、「参加」ボタンを参加者本人に押してもらうと、参加者のGoogleアカウントのメールアドレスが参加者列に追加されます。

|![スクリーンショット 2018-08-20 17.33.30.png](https://qiita-image-store.s3.amazonaws.com/0/2382/e583f53d-4901-be5d-43cf-b794da8c8b2e.png)|
| --- |
| 参加ボタンを押すと参加者列に追加される |


その後その参加者にAtCoder IDを記入してもらいます。

あとは問題のリンクから問題を指定時間内に解くだけです。

| ![スクリーンショット 2018-08-20 17.58.54.png](https://qiita-image-store.s3.amazonaws.com/0/2382/db27ac21-aaab-b75c-39ca-3368c83baa42.png) |
| --- |
| 「点数を更新」ボタンを押すと最新の状況が取得される |


「点数を更新」ボタンをクリックすると、以上の用に点数、WA回数、AC時間が表示されます。あとはバーチャルコンテストを楽しみましょう。

# ソースコードと不具合/要望の打ち上げ先

以上のシートのGoogle Apps Scriptのコードの管理と不具合管理は、

https://github.com/sifue/virtual_contest_maker

のGitHubのプロジェクトとなっています。ソースコードはISC Licenseで公開していますので自由に改変、利用してもらってかまいません。

また何か不具合/要望あればIssueを上げて貰えればと思います。もし良い機能ありましたらプルリクをお待ちしております。