スプレッドシートで GitHub の Issue を作成

こんにちは、技術部の K です。今回はスプレッドシートで GitHub の Issue を作成する方法をまとめます。

想定される目的

複数の Issue を作成する際に、毎回「New Issue」で Issue を作成する手間を省く。

手順

  1. GitHub でアクセストークンを生成する(生成済みであれば不要)。
    • 「Settings」 -> 「Developer Settings」 -> 「Personal access tokens」 -> 「Generate new token」
    • URL
  2. スプレッドシートに Issue 作成に必要な情報を記載する。

    • プルダウンを活用することで、入力の手間を省ける。
blank

  3. スクリプトを作成する

				
					  ```javascript
   // リクエストボディ
   const create_request = (userName, repository, accesstoken) => {
     return (payload) => ({
       url: `https://api.github.com/repos/${userName}/${repository}/issues`,
       method: "post",
       headers: {
         Authorization: `token ${accesstoken}`,
       },
       payload: payload,
     });
   };

   // スプレッドシートの情報取得
   const get_issues = () => {
     const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
     const sheet = spreadsheet.getActiveSheet();
     const issueCount = sheet.getLastRow() - 1;
     const range = sheet.getRange(2, 1, issueCount, 4);
     const sheetRows = range.getValues();
     return sheetRows.map((row) => ({
       title: row[0],
       body: row[1],
       assignee: row[2],
       labels: row[3] ? row[3].split(",") : [],
     }));
   };

   // issue作成
   const create_issues = () => {
     const issues = get_issues();

     const userName = "user_name";
     const repository = "repository_name";
     const accessToken = "access_token";
     const request = create_request(userName, repository, accessToken);
     const requests = issues.map((issue) => request(JSON.stringify(issue)));
     UrlFetchApp.fetchAll(requests);
   };

   // スプレッドシートを開いた際に自動で実行される
   const onOpen = () => {
     // カスタムメニューの追加
     const ui = SpreadsheetApp.getUi();
     ui.createMenu("カスタムメニュー")
       .addItem("Issue作成", "create_issues")
       .addToUi();
   };
   ```

				
			

  4. カスタムメニューなどからスクリプトを実行する

参考

課題

  • Issue の作成順序がスプレッドシートの行順と異なる。
  • 開発メンバーが増えた際など、メンテナンスが面倒。

最後に

今回はスプレッドシートで GitHub の Issue を作成する方法を紹介したが、GitHub の Issue をスプレッドシートに自動で転記し進捗管理に活かすことなどもできる。今回 GAS を学習して、習得難易度が低そうなのと、ChatGpt がスクリプトの作成に便利なことが分かった。今後も GAS などで自動化できることがないか考えていきたい。

スーパーソフトウエアの採用情報

あなたが活躍できるフィールドと充実した育成環境があります

blank
blank