일보 스프레드시트에 BacklogAPI에서 과제 데이터 가져오기

소개



Backlog의 과제와 일보의 연결을 하고 싶다는 요구가 있어, 작성했습니다.

스크립트 편집기 열기



새로 스프레드시트를 만들고,
도구 > 스크립트 편집기에서 스크립트 편집기 열기

프로그램 작성



스크립트 편집기로 다음 프로그램 작성

/**
 * 編集時に発動
 **/
function task_action() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 日報以外のシートはスルー
  if (sheet.getName() != '日報') {
    return;
  }

  var range = SpreadsheetApp.getActiveRange();

  // A列目以外の編集はスルー
  if (range.getLastColumn() != 1) {
      return;
  }

  // 入力したキーからデータ取得
  var key = range.getDisplayValue();
  set_task_data(key, range);
}

/**
 * BacklogAPIからデータを取得して反映する
 **/
function set_task_data(key, range) {
  if (key == "") {
    return;
  }

  // B(作業日)
  var d = new Date();
  range.offset(0, 1).setValue(Utilities.formatDate(d, 'Asia/Tokyo', 'yyyy/MM/dd'));
  SpreadsheetApp.flush();

  // C(作業者)
  var username = get_name();
  range.offset(0, 2).setValue(username);

  try {
    // Backlog課題取得
    var data = get_api_data(key);

    // D(種別)
    range.offset(0, 3).setValue(data["issueType"]["name"]);
    // E(作業内容)
    range.offset(0, 4).setValue(data["summary"]);

  } catch(e) {
    Browser.msgBox(e.message);
    log(e.message + "\n" + e.fileName + ".gs : " + e.lineNumber + "\nstack:\n" + e.stack);
  }
}

/**
 * BacklogAPIデータ取得
 **/
function get_api_data(key) {
  var HOST = PropertiesService.getScriptProperties().getProperty("BACKLOG_HOST");
  var API_KEY = PropertiesService.getScriptProperties().getProperty("BACKLOG_API_KEY");

  var url = HOST + "/api/v2/issues/" + key + "?apiKey=" + API_KEY;

  var fetch = UrlFetchApp.fetch(url);
  var data = JSON.parse(fetch.getContentText());

  return data;
}

/**
 * 編集者のメールアドレスから名前を取得
 **/
function get_name() {
  var name = '';
  var email = Session.getActiveUser().getEmail();

  switch(email) {
    case '[email protected]':
      name = 'テストA';
      break;
    case '[email protected]':
      name = 'テストB';
      break;
    default:
  }
  return name;
}

API 정보 유지



파일 > 프로젝트 속성 > 스크립트 속성 에서 아래 저장

BACKLOG_HOST : [BacklogAPI]
BACKLOG_API_KEY : htps : // 홉 x. 바 ckぉg. jp

트리거 추가



편집 > 현재 프로젝트 트리거 > 트리거 추가



실행할 함수 선택 : task_action
배포 시 실행 : 헤드
이벤트 소스 선택 : 스프레드 시트에서
이벤트 종류 선택 : 편집시
저장



실행



A 열에 Backlog 키를 입력하면 API에서 내용을 검색하고 표시합니다.



사이고에게



매일 보상하는 귀찮았다.
인수로 사용해 줄까.
더 편리한 도구가 있으면 좋겠다고 생각했다.

좋은 웹페이지 즐겨찾기