概要
- GitHubで大したことないツールを管理している
- 自分はモチベーションをあげるため、Clones、Viewsなどを毎週確認している
- GitHub APIというREST APIでTrafficを取得できることに気付いため、これを用いてDiscordへ記載することにした
実行結果
目次
前提条件
- Fine-grained personal access tokensが作成済みであること
- Google Driveに書き込み用のスプレッドシートが作成済であり、IDを取得していること
Fine-grained personal access tokensの作成方法について
- GitHubでFine-grained personal access tokens*1を作成
Fine-grained personal access tokensのアクセス許可について
Fine-grained personal access tokensのアクセス許可を行う (資料*2 )
Trafficの場合は"Administration"を許可すればよい
スプレッドシートのIDについて
- 他者サイト*3にあるとおり、URLから取得可能
- https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートID
手順
Google Apps Scriptの作成、編集
- Google Apps Scriptの「新しいプロジェクト」からプロジェクトを作成
- 左上のプラスボタンを選択し、4つほど「スクリプト」を作成
- このGistの通りの名前にし、中身もコピペする
- Gistの説明*4
- const.gsのreposについては、自分の管理しているリポジトリ名、スレッドIDに変更すること
- 投稿先がチャンネルの場合、スレッドIDは空欄とする
Google Apps Scriptのスクリプトプロパティを編集
- ACCESS_TOKEN: 生成したFine-grained personal access tokensをコピペする
- DISCORD_WEBHOOK_URL: Discordに書き込みたいチャンネルのWebhook URLをコピペする
- OWNER: GitHubのユーザーネームをコピペする
- SPREADSHEET_ID: スプレッドシートのIDをコピペする
動作確認
- Google Apps Scriptのmain.gsを選択した状態で、「exportChartAll」を選択し、「実行」する
- 初回実行時は承認ダイアログが表示される。以下記事にあるとおり。
Discordの該当チャンネル(スレッド)に投稿されていることを確認する
SpreadSheetに書き込まれていることを確認する
トリガー設定
- Google Apps Scriptのトリガー設定から、任意のトリガーを設定する
- 画面キャプチャなどは以下記事に記載あり
困ったことと解決方法
- グラフのyが2軸あり、わかりづらいので真ん中に値を表示させようとしたが、分からず……
- こちらのQA記事*5にある、以下部分がとても参考になった(dataLabelPlacement:"center"のところ)
var series = { 0: {dataLabel: 'value',dataLabelPlacement:"insideBase"}, 1: {dataLabel: 'value',targetAxisIndex: 1,dataLabelPlacement:"center"} };
- DiscordのWebhookでスレッドに対して投稿できるかが分からなかったが、ググってでてきた以下記事の通り対応できた
https://discord.com/api/webhooks/.../...?thread_id=999999999999
のところ scrapbox.io
終わりに
- 今までは以下のBotで毎週メンションさせ、手動でメモっていた
- 面倒くさい運用しなくて便利になり、具体的な数値をスプレッドシートに保存でき、今後なにかに使うことができるかもしれない
- Google Apps Scriptで自動化できることがまだまだ残っている気がする
*1:GitHub: personal access token を管理する
*2:きめ細かい個人用アクセス トークンに必要なアクセス許可
*3:https://blog-and-destroy.com/33158
*4:https://docs.github.com/ja/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists
*5:https://stackoverflow.com/questions/52727537/change-position-of-data-label-in-embedded-combo-chart