You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Apps Script将Jira返回的Key更新至Google Sheets指定单元格

Google Apps Script:创建Jira工单后更新Sheet及Jira字段的解决方案

一、将Jira返回的工单Key更新到Google Sheets对应单元格

你的现有代码存在几处问题导致无法正确更新Sheet:

  1. SpreadsheetApp.getActiveSheet(749202248) 用法错误,getActiveSheet() 不需要传入ID参数;且你已提前获取目标sheet对象,直接复用即可。
  2. 变量 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:25:22