为什么在使用 REST API 创建 Jira 问题时无法使用 Google 电子表格中的数据



摘要

我试图在Google Sheets中编写一个脚本,允许我在编辑特定单元格时使用REST API在Jira Cloud中创建问题。此外,Jira问题应该包含我从电子表格中提取的信息。

我设法使触发器工作,并从Jira API获得了成功的响应。我可以成功创建问题,但只能使用我放入脚本中的问题字段信息。一旦我尝试使用电子表格中的数据,它就不再有效了。

我查看了stackoverflow是否有任何相关问题,但找不到任何解决这个特定问题的问题。

描述

当我编辑电子表格中的特定单元格,并且我正在使用specialOnEdit()函数时,应该立即创建问题,该函数允许我将当前位于包含任何值和第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()函数包含我用于连接到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":中的信息。

现在,我想使用谷歌表单中的单元格值来填充那些"fields":;值再次来自我的最后一行,该行包含任何值,这次是第1列。但是,如果我开始在createIssue()函数中为此声明变量,那么脚本将不再工作。我试过的看起来像这个

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()函数,什么也不会发生,但我在控制台中也没有收到任何错误消息。有人知道问题出在哪里吗?或者这根本不可能?

*编辑如果我使用这样的文本字符串添加变量var summary = "example string"工作正常。一旦我添加了与电子表格相关的任何变量,无论我是否修复了Cooper指出的getValue()错误,该函数都不再工作。

理论上只添加之类的东西

var sheet = SpreadsheetApp.getActiveSpreadSheet().getSheetByName('name of my sheet');

没有任何其他东西不应该有任何效果,但它也不应该干扰我的功能。可能是一个重要的细节。

var summary = sheet.getRange(lastRow, 1);应为var summary = sheet.getRange(lastRow, 1).getValue();

最新更新