LoginSignup
3
5

GitHubのIssueをJavascriptから作る方法

Last updated at Posted at 2024-05-03

はじめに

JavascriptでGitHubのIssueを作成したい!
そんな事よくあると思います()
それを調べるのにかなり苦労したので、
備忘録として書くことにしました。

トークンの取得

GitHubをJavascript側から操作する為、
GitHubへのアクセストークンを取得する必要があります。
アクセストークンには様々な権限を付与する事ができますが、
詳しくは他の記事などを参照してくださいな....

アクセストークンの作成

GitHubアカウントを持っている。
ログインしている事が前提になります。

まず最初はSettingsに移動しましょう。

少し下がった所にあるDeveloper settingsに移動しましょう。

Personal access tokensの下にあるFine-grained tokensに移動します。
トークンを作成した時は画像の様にリストとして表示されます。
Generate new tokenをクリックして作成開始です!
Fine-grained tokens.png

これが作成画面です。
Personal access tokens.png

各パラメータの説明

  • 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"にする必要があります

以上を変更してOverviewが以下の様になったらOK
Overview.png

Generate tokenを押し、トークン作成完了です!
押した後に表示されるトークンIdはちゃんと保管しましょう。
調べてないのでわからないですが、再発行できない可能性があります。

JavascriptでIssueを作る!

さてIssueを作成していきましょう。

GitHubCreateIssue.js
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);
    }
}

コードのテスト

コードのテストをしてみましょう!
以下のコードを実行してみると....

Test.js
CreateIssue("Test issue", "これはテストで作成しているよ!", []);

Test issue.png
成功です!
Issueを作成できました!

最後に

初めて記事を作り勢いだけで書いたので、
拙い部分や読みにくい部分があるかと思います。
ご了承ください。
最後まで閲覧いただきありがとうございました!

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5