Backlog 과제 목록을 GoogleAppsScript로 SpreadSheet에 연결

Backlog의 과제 목록을 Spreadsheet에 붙이는 경우가 많기 때문에 메모해 둡니다

스프레드시트 준비



아래 표와 같이, 2행째에 Backlog의 응답의 키를 미리 기술해 두고, 과제의 값을 3행째 이후에 기술해 가는 것으로 한다.
커스텀 필드의 경우, 1번째는 customFields1, 2번째는 customFields2...로 한다.

일괄 취득 전의 이미지




개요
마감일
상태
세 번째 맞춤 입력란


summary
dueDate
status
customFields3

 



 





일괄 취득 후의 이미지




개요
마감일
상태
세 번째 맞춤 입력란


summary
dueDate
status
customFields3

트리플 엑스
2019/06/06
처리 중
xxxxxx

yyy 건
2019/07/07
미대응
yyyyyy


Backlog 과제 얻기



여기에 메모했다.
h tps:// 퀵했다. 작은 m/루 by FM↑/있어 MS/1c594819134258d1C4 그림 3

SpreadSheet에 붙여넣기



SpreadSheet에 붙여넣는 메인 함수



main.js
function writeSpreadsheet(array) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名");//シート名を指定
  var key_row = 2;//キーの行を指定
  var write_issues = [];//書き込み内容を格納する配列

  //SpreadSheetで使用するキー一覧
  var keys = sheet.getRange(key_row, 1, 1, sheet.getLastColumn()).getValues()[0];

  for(var i in array){
    var issue = array[i];
    var write_issue = [];

    //無効と重複は表示しない
    if(issue["resolution"] && (issue["resolution"]["id"] === 2 || issue["resolution"]["id"] === 3)){
      continue;
    }

    for(ii in keys){
      var key = keys[ii];
      if(!key) break;

      //値を配列から取得
      var val = issue[key];

      //カスタムフィールドの値を取得
      if(key.match(/^customFields/)) val = val["customFields"][key.match(/\d+$/) - 1]["value"];

      //配列の場合は値に変換する関数
      val = val2str(val);

      //日付の場合、フォーマットを変更する関数
      val = dateFormat(val);

      //書き込み用の配列に追加
      write_issue.push(val);
    }
    //書き込み用の配列に追加
    write_issues.push(write_issue);
  }

  //データをシートに書き込む
  if(write_issues){
    sheet.getRange(key_row + 1, 1, write_issues.length, write_issues[0].length).setValues(write_issues);
    Browser.msgBox("書き込み完了しました。");
  }
  else{
    Browser.msgBox("データはありませんでした。");
  }
}

형식을 알 수 없는 값을 재귀적으로 문자열로 변환



배열의 경우는/로 단락 연결하도록 한다.

util.js
function val2str(val){
  if(val === null) return "";

  if(typeof val === "object"){
    if(val["name"]) return val["name"];

    if(val[0]){
      var val2 = val2str(val[0]);
      for(i in val){
        val2 += "/" + val2str(val[i])
      }
      return val2;
    }
  }
  return val;
}

SpreadSheet의 날짜 형식으로 변환



YYYY-MM-DDTHH:MM:SSZ 를 YYYY/MM/DD 로 변환.
SpreadSheet에 YYYY/MM/DD로 입력하면 날짜로 인식합니다

util.js
function dateFormat(date){
  if(!date) return date;
  if(typeof date !== "string") return date;

  var regex_date = /^\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
  if(date.match(regex_date)) return date.slice(0,4) + "/" + date.slice(5,7) + "/" + date.slice(8,10);
  return date;
}

좋은 웹페이지 즐겨찾기