TaskSphere:GitHubプロジェクトのフィールドIDを取得するPythonスクリプト

Python

こんにちは!今日は、GitHubのプロジェクトからフィールドのIDを取得するPythonスクリプトについて説明します。このスクリプトは、GitHubのAPIを使用してプロジェクトの情報を取得し、プロジェクト内のフィールドのIDを表示します。

デモ動画

前提条件

このスクリプトを実行するには、以下の条件が必要です。

  1. PythonがインストールされていることTêrmcolorとArtライブラリがインストールされていること
  2. GitHubのPersonal Access Tokenを取得していること
  3. 環境変数に以下の値を設定していること
    • GITHUB_PERSONAL_ACCESS_TOKEN: GitHubのPersonal Access Token
    • GITHUB_USER_LOGIN: GitHubのユーザーログイン名
    • GITHUB_PROJECT_NUMBER: 対象のGitHubプロジェクトの番号

スクリプトの説明

では、スクリプトの内容を詳しく見ていきましょう。

必要なライブラリのインポート

import os
import requests
from termcolor import colored
from art import *

このセクションでは、スクリプトで使用するライブラリをインポートしています。osはファイル名を取得するため、requestsはGitHub APIにHTTPリクエストを送信するため、termcolorartは出力を装飾するために使用します。

環境変数の取得

token = os.environ.get("GITHUB_PERSONAL_ACCESS_TOKEN")
user_login = os.environ.get("GITHUB_USER_LOGIN")
project_number = os.environ.get("GITHUB_PROJECT_NUMBER")

ここでは、環境変数からGitHubのPersonal Access Token、ユーザーログイン名、プロジェクト番号を取得しています。これらの値が設定されていない場合は、エラーメッセージを表示してスクリプトを終了します。

GraphQLクエリの定義

query_project = """
query {
  user(login: "USER_LOGIN") {
    projectV2(number: NUMBER) {
      title
      id
    }
  }
}
"""

query_fields = """
query {
  node(id: "PROJECT_ID") {
    ... on ProjectV2 {
      fields(first: 20) {
        nodes {
          ... on ProjectV2Field {
            id
            name
          }
          ... on ProjectV2IterationField {
            id
            name
            configuration {
              iterations {
                startDate
                id
              }
            }
          }
          ... on ProjectV2SingleSelectField {
            id
            name
            options {
              id
              name
            }
          }
        }
      }
    }
  }
}
"""

このセクションでは、GitHub APIに送信するためのGraphQLクエリを定義しています。最初のクエリquery_projectは、プロジェクトのタイトルとIDを取得するためのものです。2番目のクエリquery_fieldsは、プロジェクト内のフィールドの情報を取得するためのものです。

プロジェクト情報の取得

query_project = query_project.replace("USER_LOGIN", user_login)
query_project = query_project.replace("NUMBER", project_number)

data_project = {
    "query": query_project
}

response_project = requests.post("https://api.github.com/graphql", headers=headers, json=data_project)

ここでは、query_project内のプレースホルダーを実際の値に置き換え、GitHub APIにPOSTリクエストを送信してプロジェクト情報を取得しています。レスポンスからプロジェクトのタイトルとIDを取得し、それらを表示します。

フィールド情報の取得

query_fields = query_fields.replace("PROJECT_ID", project_id)

data_fields = {
    "query": query_fields
}

response_fields = requests.post("https://api.github.com/graphql", headers=headers, json=data_fields)

ここでは、query_fields内のプレースホルダーを実際のプロジェクトIDに置き換え、GitHub APIにPOSTリクエストを送信してフィールド情報を取得しています。

フィールド情報の表示

fields = response_fields.json()["data"]["node"]["fields"]["nodes"]

print(colored("Fields:", "magenta"))
for field in fields:
    print(colored(f"- {field['name']}", "yellow"))
    print(colored(f"  ID: {field['id'][:4]}XXXXXXXXXX", "cyan"))
    if "options" in field:
        print(colored("  Options:", "green"))
        for option in field["options"]:
            print(colored(f"    - {option['name']}", "yellow"))
            print(colored(f"      ID: {option['id']}", "cyan"))
    if "configuration" in field:
        print(colored("  Iterations:", "green"))
        for iteration in field["configuration"]["iterations"]:
            print(colored(f"    - Start Date: {iteration['startDate']}", "yellow"))
            print(colored(f"      ID: {iteration['id']}", "cyan"))

最後に、取得したフィールド情報を表示しています。各フィールドの名前とIDを表示し、単一選択フィールドの場合は選択肢の名前とID、繰り返しフィールドの場合は各繰り返しの開始日とIDを表示します。

まとめ

以上が、GitHubプロジェクトのフィールドIDを取得するPythonスクリプトの説明でした。このスクリプトを使用することで、GitHubのAPIを通じてプロジェクトの情報を取得し、プロジェクト内のフィールドのIDを簡単に取得することができます。

フィールドのIDを知ることは、プロジェクトの自動化やデータの更新を行う際に非常に重要です。このスクリプトを活用して、GitHubプロジェクトをより効率的に管理していきましょう!

リポジトリ

GitHub - Sunwood-ai-labs/TaskSphere
Contribute to Sunwood-ai-labs/TaskSphere development by creating an account on GitHub.

参考サイト

API を使用して Projects を管理する - GitHub Docs
GraphQL API を使用して、プロジェクトを自動化できます。
GitHub GraphQL APIを利用し、複数リポジトリが紐づくGitHub ProjectsのIssueリストを取得する - いいものを広め隊
はじめに 今回想定するGitHub Projects GitHub GraphQL APIを使うまでの準備 1. アクセストークンの登録 2. Issueを取得したいGitHub Projectsのidを取得する 今回はPythonで実行します GitHub Projectsに紐づくIssue一覧を取得する 特定のステ...
個人用アクセス トークンを管理する - GitHub Docs
コマンド ラインまたは API を使用して GitHub への認証を行うときに、パスワードの代わりに personal access token を使用することができます。

コメント

タイトルとURLをコピーしました