如何通过Google Apps Script将Jira返回的Key更新至Google Sheets指定单元格
Google Apps Script:创建Jira工单后更新Sheet及Jira字段的解决方案
一、将Jira返回的工单Key更新到Google Sheets对应单元格
你的现有代码存在几处问题导致无法正确更新Sheet:
SpreadsheetApp.getActiveSheet(749202248)用法错误,getActiveSheet()不需要传入ID参数;且你已提前获取目标sheet对象,直接复用即可。- 变量
Description未定义,会导致脚本报错。
修正后的完整代码如下:
// @ts-nocheck function createIssue() { console.log(arguments); // 设置Jira凭证 var username = "test"; // 替换为你的Jira用户名 var password = "test"; // 替换为你的Jira密码(或API令牌) var UserCredentials = "Basic " + Utilities.base64Encode(username + ":" + password); // 获取目标Sheet var sheet = SpreadsheetApp.openById("7492").getSheetByName("test"); var lastRow = sheet.getLastRow(); var summary = sheet.getRange(lastRow, 2).getValue(); var description = sheet.getRange(lastRow, 3).getValue(); // 假设描述在第3列,可根据实际调整 var IssueURL = "https://jira.test.com/rest/api/2/issue/"; // 替换为你的Jira实例URL var IssueData = { "fields": { "project": { "key": "APPSCR" }, "summary": summary, "description": description, // 使用定义好的描述变量 "issuetype": {"name": "Task"} } }; // 调用Jira API创建工单 var payload = JSON.stringify(IssueData); 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(IssueURL, options); var dataAll = JSON.parse(response.getContentText()); console.log(dataAll); // 将Jira返回的工单Key写入第7列(G列)的对应行 sheet.getRange(lastRow, 7).setValue(dataAll.key); }
关键修正点:
- 复用已获取的
sheet对象,直接调用getRange(lastRow, 7).setValue(dataAll.key)完成写入 - 补全
description变量的定义,避免脚本报错 - 将
muteHttpExceptions的值改为布尔类型true,符合参数要求
二、使用Jira响应数据更新Jira字段值
如果需要用创建工单后的响应数据(比如工单ID/Key)更新该工单的其他字段,需调用Jira的更新工单API(PUT请求),接口地址为https://jira.test.com/rest/api/2/issue/{issueKey},其中{issueKey}替换为返回的dataAll.key。
以下是创建工单后立即更新字段的示例,比如给工单添加经办人、更新自定义字段:
// 在获取dataAll之后添加以下代码 var updateIssueURL = "https://jira.test.com/rest/api/2/issue/" + dataAll.key; // 构造更新字段的payload,示例:设置经办人、更新自定义字段(需替换为你的字段ID/名称) var updatePayload = JSON.stringify({ "fields": { "assignee": {"name": "jira-username"}, // 替换为目标经办人用户名 "customfield_12345": "更新后的字段值" // 替换为你的自定义字段ID和对应值 } }); var updateOptions = { "method": "PUT", "headers": headers, // 复用之前的headers "payload": updatePayload }; // 发送更新请求 var updateResponse = UrlFetchApp.fetch(updateIssueURL, updateOptions); console.log("工单更新结果:", JSON.parse(updateResponse.getContentText()));
注意事项:
- 确保你的Jira账号有更新对应字段的权限
- 自定义字段需要使用正确的字段ID,可通过Jira的字段配置查询获取
- 不同字段的格式要求不同(比如用户字段需传入用户对象,日期字段需符合ISO格式),需匹配Jira字段规范
内容的提问来源于stack exchange,提问作者user3754136
相关产品推荐
相关产品推荐

