新規投稿
フォローする

kintone.proxyを使用して、JiraのREST API(POST)を実行したい

実現したいこと

  • kintoneレコードを特定のステータスに更新すると、Jiraにタスクを作成する。

起きていること

  • リクエストを送ると、「このプロジェクトに課題を作成できる権限がありません。」のエラーメッセージが表示されます。
  • ヘッダー情報などは、Chrome拡張の「Talend API Tester」を使用し、Jiraにタスク作成できた(レスポンスで201が返ってきたもの)を使用しています。

 

この場合、何が原因になるのでしょうか?kinntone.proxyを実行するための権限等は不要という理解ですが合っていますでしょうか?(「Talend API Tester」を使用してタスク作成できていることから、kintone上で何かの噛み合わせが悪くなっているのだと考えています。)

(function() {
  'use strict';

kintone.events.on('app.record.detail.process.proceed', function(event) {

 const nextStatus = event.nextStatus.value;
        
 const rec = event.record;
        
      /*実行後のステータスが「AAAA」「BBBB」のときのみJiraに起票*/
      if(nextStatus === 'AAAA' || 'BBBB'){
                 
        /*Jiraにログインするためのトークンを格納*/
        const apiToken = "{APIトークンを格納}";
        
           /*使用するJira環境を格納*/
        const baseUrl = "https://{mydomain}.atlassian.net";
          /*使用したいREST APIのリソースを格納*/
        const apiUrl = baseUrl + "/rest/api/2/issue";
          
          const options = {
            method: "POST",
            url: apiUrl,
            headers: {
              "Content-Type": "application/json",
              "Authorization": "Bearer " + apiToken,
              "X-Atlassian-Token" : "no-check",
              "Accept" : "application/json",
              "User-Agent" : "dummy"
            },
            data: JSON.stringify({
              "fields": {
              "project": {
              "key":"{プロジェクトのキー}"
              },
            "summary": "テスト文章です",
              "issuetype": {
              "id": {課題タイプのID}
              }
              }
            })
          };
          
          return kintone.proxy(options.url,options.method,options.headers,options.data).then((response) => {
            //成功時のログ
            console.log(response);
            
          }).catch((error) => {
            //エラー時のログ
            console.error(error);
          });
        }
       return event;
    });
})();

 

0

2件のコメント

Avatar
TO

nii様

"Accept" : "application/json"となっているので,dataもjsonで良いと思うのですが,

data: JSON.stringify({

でdataがjson"文字列"になっているのが不具合の原因かもしれません.
(このにプロジェクトのキーがあるので,それが読めなくて「プロジェクトの権限が~」となっていると推測)

data: {
    "fields": {
    "project": {
      "key":"{プロジェクトのキー}"
         },
         "summary": "テスト文章です",
         "issuetype": {
            "id": {課題タイプのID}
         }
         }
       }

…とするとどうでしょうか.
参考になれば幸いです.

 

0
Avatar
nii

TO様

コメントいただきありがとうございます。

こちら調査を続けてみた結果、Jira側へのIP許可リストがされていないことが原因だと判断しました。

 

しかし、社内で利用しているJiraのプランではIP許可リストを使用できず、且つIP許可リストを試すためにプランアップもできないため、TO様にご指摘いただいたコードの挙動が確認できておりません。(JSON.stringify(があってもなくてもエラーメッセージに変化はありませんでした。)

コメントいただいたにも関わらず、明確な回答ができず申し訳ございません。

0
サインインしてコメントを残してください。