簡體   English   中英

使用 REST API 創建 Jira 問題時,為什么我不能使用 Google 電子表格中的數據

[英]Why can't I use data from my Google spreadsheet when creating Jira issues using REST API

概括

我正在嘗試在 Google 表格中編寫一個腳本,該腳本允許我在編輯特定單元格時使用 REST API 在 Jira Cloud 中創建問題。 此外,Jira 問題應該包含我從電子表格中提取的信息。

我設法讓觸發器工作,並從 Jira API 獲得了成功的響應。 我可以成功創建問題,但只能使用我放入腳本的問題字段信息。 一旦我嘗試使用電子表格中的數據,它就不再起作用了。

我查看了有關 stackoverflow 是否有任何相關問題,但找不到任何解決此特定問題的問題。

描述

一旦我在電子表格中編輯特定單元格並且我正在使用specialOnEdit() function,就應該創建一個問題,它允許我定位當前位於包含任何值和第 6 列的最后一行的單元格。我的代碼看起來像這樣

function specialOnEdit(evt) {
  var range = evt.range;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('name of my sheet');
  var lastRow = sheet.getLastRow();

  if(range.getRow() == lastRow && range.getColumn() == 6) {
   createIssue()
  }
}

createIssue() function 包含我用於連接到 Jira API 的代碼。 看起來像這樣

function createIssue() {
  
    var url = "https://xxxxx.atlassian.net/rest/api/3/issue";
    var username = "xxxxx";
    var password = "xxxxx";
    var userCredentials = "Basic " + Utilities.base64Encode(username + ":" + password);

    var data = {
      "fields": {
        "summary": "summary",
        "issuetype": {
          "id": "id",
        },
        "project": {
          "id": "id"
        },
        "priority": {
          "id": "id",
        }
      }
    };
      var payload = JSON.stringify(data);

      var headers = { "Accept":"application/json",
                  "Content-Type":"application/json",
                  "Authorization": userCredentials,
                  "muteHttpExceptions": "True",
      };
      var options = { "method":"POST",
                    "headers": headers,
                    "payload": payload,
      };
      var response = UrlFetchApp.fetch(url, options);
}

到目前為止一切順利,一切正常。 如果我編輯目標單元格,則會創建一個 Jira 問題,其中包含我放入相應"fields":

現在我想使用我的 Google 表格中的單元格值來填充這些"fields": 這些值再次來自我的最后一行,其中包含任何值,這次是第 1 列。但是,如果我開始在我的createIssue() function 中為此聲明變量,則腳本不再起作用。 我試過的看起來像這樣

function specialOnEdit(evt) {
  var range = evt.range;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('name of my sheet');
  var lastRow = sheet.getLastRow();

  if(range.getRow() == lastRow && range.getColumn() == 6) {
   createIssue()
  }
}

function createIssue() {

    var url = "https://xxxxx.atlassian.net/rest/api/3/issue";
    var username = "xxxxx";
    var password = "xxxxx";
    var userCredentials = "Basic " + Utilities.base64Encode(username + ":" + password);

    var sheet = SpreadsheetApp.getActiveSpreadSheet().getSheetByName('name of my sheet');
    var lastRow = sheet.getLastRow();
    var summary = sheet.getRange(lastRow, 1);

    var data = {
      "fields": {
        "summary": summary,
        "issuetype": {
          "id": "id",
        },
        "project": {
          "id": "id"
        },
        "priority": {
          "id": "id",
        }
      }
    };
      var payload = JSON.stringify(data);

      var headers = { "Accept":"application/json",
                  "Content-Type":"application/json",
                  "Authorization": userCredentials,
                  "muteHttpExceptions": "True",
      };
      var options = { "method":"POST",
                    "headers": headers,
                    "payload": payload,
      };
      var response = UrlFetchApp.fetch(url, options);
}

如果觸發specialOnEdit() function,沒有任何反應,但我也沒有在控制台中收到任何錯誤消息。 有誰知道似乎是什么問題? 或者這根本不可能?

var summary = sheet.getRange(lastRow, 1); 應該是var summary = sheet.getRange(lastRow, 1).getValue();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM