【Jira(ジラ)ユーザーは知ってほしい】Script Runner for Jira 超入門
2022年04月26日(2026年05月07日 更新)
小林 香菜子 kanako kobayashi
こんにちは。
エンジニアの小林です。
今回はアトラシアンの大人気アプリ「Script Runner for Jira」について、「Javaなどでプログラミングは少ししたことがあるけど JiraのAPIを使うのは初めて!」という方向けに、Script Runnerを使った開発の入門的な内容をご紹介します!
■Script Runner for Jira とは?
Jiraのサードパーティーアプリです。
Jiraのワークフロー・カスタムフィールドなどで行いたい処理を、Groovy言語(Javaと同じように書けるスクリプト言語)で記述することができます。
柔軟なカスタマイズができるのがメリットです。一方、保守の手間はかかることに留意しましょう。
■Script Runner for Jiraのはじめの一歩
まずは Script Console 機能を使って簡単なスクリプトを実行してみます。
ScriptRunner を インストールした Jira で、管理画面 > アプリを管理 > ScriptRunner > Console に進みます。
(または、ggショートカットキーで管理画面検索ダイアログを開き、Script Console と入力します)
Scriptエディタに下記コードを入力して「Run」をクリックします。
- Script
- return "test"
Resultタブに下記のように表示されます。
- Result
- test
このように、 Script Console では実行したプログラムの戻り値が Result タブに出力されます。
■ログ出力
次に、ログを出力してみます。
エディタに下記コードを入力して実行してみましょう。
- Script
- log.warn("test")
Logs タブに下記のようなログが出力されます。
- Logs(例)
- 2020-04-11 08:19:49,253 WARN [runner.ScriptBindingsManager]: test
自分で書いたコードがうまく動かない時は、この方法でログを出力してデバッグできます。
■JiraのAPIを使ってみる
JiraのJava API を使って簡単なスクリプトを実行してみます。
Jiraの課題キーから、課題の要約を取得してみましょう。
下記コードの XXXXX の部分を適当な課題キーに置き換えて、実行してみてください。
- Script
- import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
IssueManager issueManager = ComponentAccessor.getIssueManager();
Issue issue = issueManager.getIssueObject("XXXXX");
return issue.getSummary();
Resultタブに課題の要約が出力されます。
【解説】
JiraのAPIドキュメントを見ながら確認してみてください。
【ComponentAccessor】
その名の通り、ComponentAccessorを使うとJiraのコンポーネントを取得できます。
コンポーネントとは何なのか気になりますが、とりあえず今は置いておきましょう。
今回使った IssueManager など XXXManager を使いたい時は、このComponentAccessorから取得できることが多いです。
【IssueManager】
issue(課題)に関する様々な処理を行ってくれるクラスです。
今回は ComponentManager を使って取得しました。
【Issue】
Jiraのissue(課題)です。
今回は、issueManager を使って指定した課題キーの課題を取得しました。
ちなみに、GroovyではJavaと違って型宣言などを省略しても動きます。例えば下記コードでも同じことができます。
- import com.atlassian.jira.component.ComponentAccessor
def issueManager = ComponentAccessor.getIssueManager()
def issue = issueManager.getIssueObject("SP-1")
return issue.summary
練習1 Jiraの課題キーから、課題の報告者を取得してみましょう。
- import com.atlassian.jira.component.ComponentAccessor
def issueManager = ComponentAccessor.getIssueManager()
def issue = issueManager.getIssueObject("SP-1")
return issue.reporter.name
練習2 Jiraのプロジェクトキーから、プロジェクト名を取得してみましょう。
ヒント
ProjectManager を使ってみましょう。
XXX:プロジェクトキー
- import com.atlassian.jira.component.ComponentAccessor
def projectManager = ComponentAccessor.getProjectManager()
def project = projectManager.getProjectByCurrentKey("XXX")
return project.name
■ワークフローをカスタマイズしてみる
ScriptRunner の機能を使って、ワークフローの事後操作を設定してみます。
プロジェクト管理画面 > ワークフロー から ワークフローを編集します。
適当なトランジションに事後操作を追加します。
ScriptRunner をインストール済みのJiraの場合、「Script Post-Function」という事後操作を追加することができます。
「Script Post-Function」には、自身で一からスクリプトを書く必要がある「Custom script post-function」の他にも、ビルトインの事後操作が用意されています。
今回は、「Custom script post-function」を選択します。
■ログ出力
まずは試しに、トランジションされた課題の課題キーをログに出力してみます。
「Inline script」エディタにスクリプトを入力します。
- log.warn(issue.key)
ここで「issue」という変数は、ScriptRunner側で用意している、宣言なしで使える変数です。
スクリプトを保存し、ワークフローを発行したら、適当な課題をトランジションしてみます。
■ログ確認
設定した事後操作が実行されたことを確認するため、ログを見てみます。
ログを確認する方法はいくつかありますが、ここでは、ScriptRunnerの機能を使って確認します。
gg ショートカットキーでJira管理画面検索ダイアログを開き、「Browse ScriptRunner」へ移動します。
ここでは、ScriptRunner側で用意されている様々な処理を実行することができます。
今回はサーバーのログを確認したいので、検索フォームに「server」と入力し、「View server log files」を選択します。
atlassian-jira.log の中身を出力します。
課題キーが出力されている行があるかどうか探してみてください。
- 2020-06-24 05:06:02,706+0000 http-nio-8080-exec-13 WARN admin 306x6150x1 12ws3kp 192.168.33.1 /secure/WorkflowUIDispatcher.jspa [c.o.scriptrunner.runner.ScriptBindingsManager] SP-1
■Jira課題を編集する
次に、課題がトランジションされたら自動的に「説明」を変更するような事後操作を設定してみます。
先ほど設定した Custom script post-function を修正します。
- issue.setDescription("Hello!")
この setDescription() は、IssueのサブインターフェースMutableIssueで定義されているメソッドです。
スクリプトを保存し、ワークフローを発行したら、実際に課題をトランジションして確認してみます。
練習3 ワークフローの事後操作で、テキストフィールド(一行)カスタムフィールドに値を入力してみましょう。
いかがでしたでしょうか?
Jiraを標準機能よりもさらにカスタマイズしたい方におすすめのアプリです。
おすすめリンク集を参考に、ぜひ使ってみてくださいね。
■おすすめリンク集
- ScriptRunner 公式ドキュメント
- Adaptavist Library
- サンプルスクリプトを検索できます。
- JiraのAPIドキュメント
- 最新版に飛びます。古いバージョンを見たい時はここから選べます。
小林 香菜子 kanako kobayashi
この記事を読んだ⼈におすすめのページ
-
大量のJira課題を一括クローン 気になるアプリ
-
Jira Software(JIRA)の検索の達人になる <ベーシック検索とJIRAクエリ言語(JQL)検索>
-

アジャイルを加速させる「カイゼン活動」とは/アジャイルセミナーを開催しました。
-
待望の『Jira Software Cloud ユーザー向け 入門ガイドブック』発売しました
-
日本円での請求書払いに対応!アトラシアン製品(クラウド版)を導入するならリックソフトに問い合わせたほうがいい8つの理由
-

「Jiraのプロジェクト管理者とか組織管理者ってなに?」Jira管理者権限解説
-
「Jiraの使い方がわからない」そんなあなたに。リニューアルした「eラーニング Jira入門コース」(日本語)をお知らせします
-

Q:Jira Softwareの課題リンク「blocks」などの意味がわかりません! リックソフトの中の人に聞いてみた
-

Jira Softwareでの開発、課題タイプ「タスク」と「ストーリー」の違いがわかりません。
-

Jira(ジラ)とConfluence(コンフルエンス)の違いってなあに?
-

Jira(ジラ)とは?Jira製品の違いとは?SoftwareとWork Manegement、Service Management、Alignの違い
-

相互引用・図の埋め込み可能!Jiraで開発しているなら仕様書はConfluece(コンフルエンス)にまとめるべし
-

【クラウド版でも!】JiraのREST API を使ってみよう
-

「うわっ...わたしのJiraの通知、多すぎ...?」通知を減らす方法ー設定編
本情報はブログを公開した時点の情報となります。
Software Collection
Jira Service Management
Customer Service Management
Assets
Rovo
Focus
Jira Align
Talent














【Atlassian 年次イベント】Team '26 Anaheim に参加しています!
2026年春、ベトナムで感じた「AI熱」とBiplusの本気度 ――ベトナムITイベントレポ
5,000名以上のエンタープライズで Jira / Confluenceを選ぶ理由 ― 情報ガバナンスとセキュリティを両立する Atlassian Guard活用術
モダン開発の落とし穴『認知負荷』の正体――。複雑なエンジニアリング環境を救うIDP (Compass)の価値を一般家庭に例える