通过Google Apps脚本编辑JIRA问题 - POST和JSON

时间:2017-11-07 22:41:04

标签: javascript post google-apps-script jira jira-rest-api

我正在尝试通过GAS编辑JIRA中的问题。 看着其他人的代码 (例如 - Using Google Apps Script to Post JSON Data) 我想出了这段代码:

function myFunctionpostTest() {
  var username = "username";
  var password = "password";
  var encCred = Utilities.base64Encode(username+":"+password);

  var url = "https://<base_url>/rest/api/2/issue/";
  var data = {"project":{ "key": "STUDIO-4499"},"summary": "create 
  issue.", "issuetype": {"name": "Bug"}}  ;
  var payload = JSON.stringify(data);

  var headers = { "Accept":"application/json", 
              "Content-Type":"application/json", 
              "Authorization":"Basic " + encCred,
         };

  var options = { "method":"POST",
              "contentType" : "application/json",
              "headers": headers,
              "payload" : payload
           };
  var response = UrlFetchApp.fetch(url, headers);
  Logger.log(response); 
 }

问题在于我一直在收到错误:

  

请求失败....返回代码405

我缺少什么?为什么这段代码不起作用?
请不要回答cURL示例,因为它与我的问题无关

2 个答案:

答案 0 :(得分:0)

似乎脚本中没有使用options。那么修改如下呢?但我不知道option对于请求是否正确。对不起,我很抱歉。

来自:

var response = UrlFetchApp.fetch(url, headers);

致:

var response = UrlFetchApp.fetch(url, options);

如果这对你没用,我很抱歉。

编辑:

以下修改过的脚本怎么样?参考是here

function myFunctionpostTest() {
    var username = "username";
    var password = "password";
    var encCred = Utilities.base64Encode(username+":"+password);
    var url = "https://<base_url>/rest/api/2/issue/";
    var data = {
      "fields": {
        "project": {
          "key": "STUDIO-4499"
        },
        "summary": "create \r\n  issue.",
        "issuetype": {
          "name": "Bug"
        }
      }
    };
    var payload = JSON.stringify(data);
    var headers = {"Authorization":"Basic " + encCred};
    var options = {
      "method":"POST",
      "contentType": "application/json",
      "headers": headers,
      "payload": payload
    };
    var response = UrlFetchApp.fetch(url, options);
    Logger.log(response);
}

答案 1 :(得分:0)

使用此参考 -
https://docs.atlassian.com/jira/REST/7.4.0/?_ga=2.214927127.1280782706.1510046526-258513799.1499779287#api/2/issue-editIssue

我已将数据变量更改为

{"update":{"summary":[{"set":"Bug in business logic"}]}}; 

var url = "https://<base URL>/rest/api/2/issue/41335";

并将选项var中的方法更改为

"method":"PUT",

现在它有效!