スプレッドシートで GitHub の Issue を作成
こんにちは、技術部の K です。今回はスプレッドシートで GitHub の Issue を作成する方法をまとめます。
想定される目的
複数の Issue を作成する際に、毎回「New Issue」で Issue を作成する手間を省く。
手順
- GitHub でアクセストークンを生成する(生成済みであれば不要)。
- 「Settings」 -> 「Developer Settings」 -> 「Personal access tokens」 -> 「Generate new token」
- URL
スプレッドシートに Issue 作成に必要な情報を記載する。
- プルダウンを活用することで、入力の手間を省ける。
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 などで自動化できることがないか考えていきたい。
関連記事
- 2023-09-01
- テクノロジー