Chatworks API로 작업을 GoogleTask에 복사

이런 몬 Qiita의 유지들이 먼저 투고해 버려요! 라고 생각하면서도 학습 메모로 던져 둡니다.

Chatwork에서 작업 가져오기



chatwork.gs
function GetCWTasks() {
  // プロパティ値取得
  const token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN');

  // パラメータセット
  var params = {
    headers : {"X-ChatWorkToken" : token},
    method : "get"
  };

  // 自分の情報を取得する
  var url = "https://api.chatwork.com/v2/my/status";

  // JSON形式で取得
  var strRespons = UrlFetchApp.fetch(url, params);
  var json = JSON.parse(strRespons.getContentText());

  // エラーのある場合
  if (json['errors']){
    Logger.log("ChatWorkタスクの取得に失敗しました。");
    return null;
  }

  // 未完タスクがある場合
  if (json['mytask_num'] > 0){

    // タスク一覧
    url = "https://api.chatwork.com/v2/my/tasks";

    // JSON取得
    strRespons = UrlFetchApp.fetch(url, params);
    json = JSON.parse(strRespons.getContentText());

    // タスク取得
    return json;
  }

  return null;
}

토큰은 프로젝트의 속성에 쓰여져 있기 때문에 그것을 얻으려고합니다.
토큰의 발행 방법에 대해서는 공식 문서 에 있으므로 그쪽을 참조.

Google 작업에 추가


function AddGoogleTask(task) {
  //UNIXTime(秒)->Date(ミリ秒)変換
  var limitDate = new Date(task['limit_time'] * 1000);

  var task = {
    title: task['room']['name'],
    notes: task['body'],
    due: Utilities.formatDate(limitDate, "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'") 
  };

  // Googleタスク登録
  var taskListId = PropertiesService.getScriptProperties().getProperty('LIST_ID');
  var res = Tasks.Tasks.insert(task, taskListId);

  if (res.id != null){
    Logger.log("TaskID: " + res.id);
  } else {
    Logger.log("タスク書き込みエラー");
  }
}

GAS 편집기 메뉴의 리소스 > Google 확장 서비스에서 'Tasks API'를 사용하도록 설정합니다.
Chatworks 측에서 취할 수 있는 날짜가 UNIX 시간이므로 GoogleTask에 맞게 ISO 8601 형식으로 변환하여 등록해야 합니다.
오류 처리는 적절합니다 ...

문제 발생



무려 Chatwork 측에서 기한 시간을 지정하고 있는데… GoogleTask에는 설정할 장소가 없다!
잘 보면 GoogleTask 측에는 시작 시간 설정 항목이 있지만,
Chatwork의 작업 시간은 기한이므로 의미가 다릅니다 ...
(이런 것 만들기 전에 알아야 할데~~!)

그리고는 기입 끝난 Chatwork 태스크의 ID를 스프레드 시트에 기입해 보존해 두는 구조도 필요합니다만,
시간은 우선 두고 있어 태스크를 한 곳에 수집해 두고 싶은 분에게는 좋을지도 모릅니다.

… 그런데 자신의 태스크 관리는 어떻게 할까.

좋은 웹페이지 즐겨찾기