0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Chatworks APIでタスクをGoogleTaskにコピーする

Posted at

こんなもん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形式に変換して登録する必要があります。
エラー処理は適当です…:sweat_smile:

#問題が発生
なんとChatwork側で期限時間を指定してるのに…GoogleTaskには設定する場所がない!
よくみたらGoogleTask側には開始時間の設定項目がありますが、
Chatworkのタスクの時間は期限なので意味合いが異なりますね…:cold_sweat:
(こういうの作る前に気づくべきなのに~~!)

あとは書き込み済みのChatworkタスクのIDをスプレッドシートに書き込んで保存しておくような仕組みも必要ですが、
時間はとりあえず置いといてタスクを一箇所に収集しておきたい方にはいいかもしれません。

…さて自分のタスク管理はどうしようかな。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?