GASでうまく取り出せないjsonの値がある
解決したいこと
GASでbacklogの課題一覧を取得しようとしています。
jsonをパースして、うまく取り出せた値もあるのですが、
どうしてもうまく取り出せない値があって困っています…
解決方法を教えてください🙇♀️
発生している問題・エラー
下の画像のような感じで「ID」や「担当者」などは取り出せるのに「カテゴリー」など、
{name=名前, id=1.0, displayOrder=0.0}の形から目的の値を取り出すことができないです。
該当するソースコード
const space_id = "XXXX";
const api_key = "XXXXXXXXXX";
const sheet_id = "XXXXXXXXXX";
function getPjList() {
const api = "https://" + space_id + ".backlog.jp/api/v2/projects?apiKey=" + api_key;
let response = UrlFetchApp.fetch(api);
let pj_list = JSON.parse(response.getContentText());
for (let i = 0; i < Object.keys(pj_list).length; i++) {
getBackLogData(pj_list[i].id, pj_list[i].name);
}
}
function getBackLogData(project_id, project_name) {
let offset = 1;
let loop = true;
let sheet = insertOrSelectSheet(project_name);
const title = [
"ID",
"カテゴリー名",
"件名",
"状態",
"担当者",
];
for (let i = 1; i <= title.length; i++) {
sheet.getRange(1, i).setValue(title[i - 1]);
}
while (loop) {
const api = "https://" + space_id + ".backlog.jp/api/v2/issues?apiKey=" + api_key + "&projectId[]=" + project_id + "&sort=status&order=&statusId[]=1&statusId[]=2&statusId[]=27369&statusId[]=27441&statusId[]=27370&statusId[]=27442&statusId[]=27371&statusId[]=27372&statusId[]=6942&statusId[]=26558&statusId[]=3&count=100&offset=" + offset;
let response = UrlFetchApp.fetch(api);
let issue_list = JSON.parse(response.getContentText());
let range = 1 + offset;
for (let i = 0; i < Object.keys(issue_list).length; i++) {
let j = 0;
sheet.getRange(i + range, ++j).setValue(issue_list[i].id);
sheet.getRange(i + range, ++j).setValue(issue_list[i].issueType.name);
sheet.getRange(i + range, ++j).setValue(issue_list[i].summary);
sheet.getRange(i + range, ++j).setValue(issue_list[i].status.name);
sheet.getRange(i + range, ++j).setValue(issue_list[i].category);
sheet.getRange(i + range, ++j).setValue(issue_list[i].assignee ? issue_list[i].assignee.name : "未設定");
}
if (Object.keys(issue_list).length == 100) {
offset += 100;
Utilities.sleep(1000);
Logger.log("休憩中");
} else {
loop = false;
}
}
}
function insertOrSelectSheet(pj_name) {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let spreadsheet = SpreadsheetApp.openById(sheet_id);
let sheet = spreadsheet.getSheetByName(pj_name);
if (sheet === null) {
return ss.insertSheet(pj_name);
}
return sheet;
}
自分で試したこと
.nameと指定してみたり、
配列の数字を指定してみたり、
nullの場合の値を設定してみたりしましたが、
{name=名前, id=1.0, displayOrder=0.0}の形から先に進めません😭
0 likes