はじめに
JavascriptでGitHubのIssueを作成したい!
そんな事よくあると思います()
それを調べるのにかなり苦労したので、
備忘録として書くことにしました。
トークンの取得
GitHubをJavascript側から操作する為、
GitHubへのアクセストークンを取得する必要があります。
アクセストークンには様々な権限を付与する事ができますが、
詳しくは他の記事などを参照してくださいな....
アクセストークンの作成
GitHubアカウントを持っている。
ログインしている事が前提になります。
少し下がった所にあるDeveloper settingsに移動しましょう。
Personal access tokensの下にあるFine-grained tokensに移動します。
トークンを作成した時は画像の様にリストとして表示されます。
Generate new tokenをクリックして作成開始です!
各パラメータの説明
- Token name
- 作成するトークンの名前入力します
- Expiration
- このトークンの期限を入力します
- 期限は1週間, 1ヵ月, 2ヵ月, 3ヵ月, カスタムを選択できます
- 初めての場合は1週間でいいでしょう
- Description
- このトークンの説明を入力します
- 入力しなくてもOK
- Resource owner
- このトークンのオーナーを設定できます
- 基本的に変えなくてOK
Token nameは日本語も入力できるみたいですが、
念のため英語で決めた方がよさそうです。
権限の設定
- Repository access
- リポジトリへのアクセス権を設定できます
- 今回は"All repositories"か"Only select repositories"にします
- "Only select repositories"にした場合は、リポジトリも指定しましょう
- Permissions
- Repository permissions
- Repository accessを変更した時に表示されます
- ここで権限を設定する事ができます
- Issueを作るにはIssuesと書かれた権限を、
"Read and write"にする必要があります
- Repository permissions
Generate tokenを押し、トークン作成完了です!
押した後に表示されるトークンIdはちゃんと保管しましょう。
調べてないのでわからないですが、再発行できない可能性があります。
JavascriptでIssueを作る!
さてIssueを作成していきましょう。
const user = 'GitHubユーザー名';
const repo = 'リポジトリ名';
const token = 'トークンId';
async function CreateIssue(title, body, labels) {
const data = {
title: title,
body: body,
labels: labels,
};
try {
const response = await fetch(`https://api.github.com/repos/${user}/${repo}/issues`, {
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (response.status === 201) console.log('Issue created successfully!');
else console.error(`Error creating issue: ${response.status} - ${await response.text()}`);
}
catch (error) {
console.error('Error creating issue:', error);
}
}
コードのテスト
コードのテストをしてみましょう!
以下のコードを実行してみると....
CreateIssue("Test issue", "これはテストで作成しているよ!", []);
最後に
初めて記事を作り勢いだけで書いたので、
拙い部分や読みにくい部分があるかと思います。
ご了承ください。
最後まで閲覧いただきありがとうございました!