スプレッドシートの内容を自動でGitHubにissueとして追加してみた

みなさん、お久しぶりです!
約1年半ぶりの記事投稿になります。
あの頃は学生でしたが、現在は社会人になって東京でエンジニアとして日々努力しています。

GitHubで複数のissueを作成するのは非常に手間なので、自動で作成する仕組みを作りたいと思います。
今回はGoogle App Script(GAS)を利用してスプレッドシートから作成します。

準備

まず、以下のページからトークンの発行をします。
注意としては、自分がオーナーであるリポジトリトークンしか発行できないようです。
github.com

データ

今回は、以下のようなデータをissueとして追加します。
f:id:usmysa:20180803012434p:plain

コーディング

変数「payload」にissueの情報を設定していますが、他にもパラメータを追加したい場合は、こちらのGitHub Developerのドキュメントを参照してください。

// GitHubの情報
var REPO = "レポジトリ名",
  OWNER = "オーナー名",
  ACCESS_TOKEN = "トークン";

function index()
{
  var sheet = SpreadsheetApp.getActiveSheet();
         values = sheet.getDataRange().getValues();
  
  for (var i = 1; i < values.length; i++) { 
    var payload = {
      "title": values[i][1],
      "body": values[i][2],
      "assignees": [
        values[i][3]
      ],
    };

    issueTickets(payload);
  }
}

// GitHubでチケットを発行する関数
function issueTickets(payload) {
  var url = "https://api.github.com/repos/"+ OWNER + "/" + REPO + "/issues";
  
  var header = {
    "Authorization": "Basic " + Utilities.base64Encode(ACCESS_TOKEN),
    "Accept": "application/vnd.github.symmetra-preview+json",
    "Content-Type": "application/json",
  };

  var options = {
    "method" : "post",
    "payload" : JSON.stringify(payload),
    "headers" : header,
  };

  UrlFetchApp.fetch(url, options);
}

GitHub

結果、こんな感じで正常に追加されています。
f:id:usmysa:20180803014136p:plain

まとめ

これで、無駄な作業を減らして快適な開発をできるかと思います!