ADVERTISEMENT

【Googleスプレッドシート】Jira Issuesをインポート!REST APIとPATでの認証

【Googleスプレッドシート】Jira Issuesをインポート!REST APIとPATでの認証
🛡️ 超解決

Jiraで管理している課題をGoogleスプレッドシートに取り込みたいと考えたことはありませんか。手動でコピー&ペーストするのは非効率で、更新のたびに手間がかかります。JiraのREST APIとPersonal Access Token(PAT)を使えば、スプレッドシートから直接課題データを取得できます。この記事では、Apps Scriptを使ってJira Issuesをインポートする具体的な手順を解説します。

【要点】Jira IssuesをスプレッドシートにインポートするにはREST APIとPATを組み合わせます

  • JiraのREST API: UrlFetchAppでJiraのエンドポイントにリクエストを送信し、課題データをJSON形式で取得します。
  • Personal Access Token (PAT): 基本認証の代わりにPATを使うことで、セキュリティを高めた認証を行います。
  • Apps Script: Googleスプレッドシート内でスクリプトを実行し、取得したデータをシートに展開します。

ADVERTISEMENT

Jira REST APIとPAT認証の概要

JiraのREST APIを呼び出すには、認証情報が必要です。従来はBasic認証(ユーザー名+パスワード)を使う方法もありましたが、2020年以降Jiraはパスワード認証の廃止を進めており、現在はAPIトークンまたはPATの使用が推奨されています。PATはユーザーごとに発行でき、スコープ(権限)を制限できるため安全性が高いです。

GoogleスプレッドシートからJira APIを呼び出すには、組み込みのApps Scriptを使用します。Apps Scriptには UrlFetchApp というHTTPリクエスト用のクラスが用意されており、これを使ってJiraのエンドポイントにアクセスします。

この記事では、Jira Cloudを前提とします。Jira Server(オンプレミス)の場合はエンドポイントや認証方法が異なる場合があります。

Jira Issuesをインポートする手順

以下の手順は、Jira Cloudのプロジェクトから未完了の課題を取得し、スプレッドシートに書き込む例です。事前にJiraのPATを発行しておいてください。

1. JiraでPATを発行する

  1. Jiraのアカウント設定を開く
    Jiraにログインし、右上のプロフィールアイコンから「アカウント設定」を選択します。
  2. 「セキュリティ」タブをクリックする
    左側のメニューから「セキュリティ」を選び、「APIトークンの作成と管理」をクリックします。
  3. 「APIトークンを作成」をクリックする
    トークンにラベルを付け(例:GoogleSheets)、「作成」を押します。表示されたトークンをコピーして安全な場所に保存します。

2. GoogleスプレッドシートでApps Scriptを開く

  1. スプレッドシートを新規作成する
    Googleドライブから新規スプレッドシートを作成します。
  2. 拡張機能メニューからApps Scriptを開く
    メニューバーの「拡張機能」→「Apps Script」をクリックします。

3. スクリプトを記述する

スクリプトエディタが開いたら、以下のコードを貼り付けます。Jiraのドメイン、プロジェクトキー、PATは実際の値に置き換えてください。

function importJiraIssues() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var jiraDomain = 'https://your-domain.atlassian.net';
  var projectKey = 'YOUR_PROJECT_KEY';
  var pat = 'YOUR_PAT';
  
  var url = jiraDomain + '/rest/api/3/search?jql=project=' + projectKey + '+AND+status!=Done';
  var options = {
    'method': 'get',
    'headers': {
      'Authorization': 'Bearer ' + pat
    },
    'muteHttpExceptions': true
  };
  
  var response = UrlFetchApp.fetch(url, options);
  var json = JSON.parse(response.getContentText());
  var issues = json.issues;
  
  // ヘッダー行
  var headers = ['Key', 'Summary', 'Status', 'Assignee', 'Created'];
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  
  // データ行
  var data = [];
  for (var i = 0; i < issues.length; i++) {
    var issue = issues[i];
    var row = [
      issue.key,
      issue.fields.summary,
      issue.fields.status.name,
      issue.fields.assignee ? issue.fields.assignee.displayName : '',
      issue.fields.created
    ];
    data.push(row);
  }
  if (data.length > 0) {
    sheet.getRange(2, 1, data.length, headers.length).setValues(data);
  }
}

4. スクリプトを実行する

  1. 関数を選択して実行する
    スクリプトエディタ上部の関数ドロップダウンから importJiraIssues を選び、実行ボタン(▶)をクリックします。
  2. 承認を求めるダイアログに従う
    初回実行時には、外部サービスへのアクセス許可を求められます。「権限を確認」→「許可」をクリックして承認します。
  3. シートにデータが表示されるのを確認する
    実行が完了すると、アクティブなシートに課題の一覧が表示されます。

インポート時の注意点とトラブル対策

401 Unauthorized エラーが出る場合

PATが間違っているか、有効期限が切れている可能性があります。PATの値を再確認し、必要なら再発行してください。また、Authorizationヘッダーの形式が「Bearer + トークン」になっているか確認してください。

余計な列が表示されないようにする

取得するフィールドを制限したい場合は、JQLに fields パラメータを追加します。例えば fields=summary,status,assignee と指定すると、それらのフィールドだけ取得できます。

レート制限に注意する

Jira CloudにはAPI呼び出しのレート制限があります。多くの課題を一度に取得する場合は、ページネーション( maxResultsstartAt )を利用して分割取得することを検討してください。

スクリプトの実行時間が長い場合

Apps Scriptの実行時間は6分に制限されています。大量データを扱う場合は、複数回に分けて実行するか、 Utilities.sleep() で間隔を空けるなどの工夫が必要です。

ADVERTISEMENT

Jira認証方法の比較: Basic認証 vs PAT

項目 Basic認証 PAT認証
認証情報 ユーザー名+パスワード 発行されたトークン文字列
セキュリティ パスワード漏洩のリスク大 スコープ制限可能・漏洩時も再発行で対処
Jira Cloud対応 非推奨(廃止予定) 推奨(2024年現在)
スクリプト内での実装 Authorization: Basic base64(ユーザー名:パスワード) Authorization: Bearer PAT

まとめ

JiraとGoogleスプレッドシートをREST APIで連携することで、課題データを自動的にスプレッドシートに取り込めるようになります。この方法を使えば、最新の課題一覧をいつでもシート上で確認でき、手作業による転記ミスを防げます。スクリプトを応用すれば、特定のJQLでフィルタリングしたり、更新日の差分だけ取得するなど、より高度な運用も可能です。ぜひ実際のプロジェクトで試してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。