Googleカレンダーとチャットワークのタスクを連携する方法

こんにちは!藤堂です!
社内・社外のコミュニケーションツールにチャットワークを使っている方も多いのではないでしょうか?
今回はGoogleカレンダーとチャットワークのタスクの連携方法をお伝えします!

チャットワークのAPIトークンを取得する

①チャットワークの右上のアイコンをクリックし、「APIトークン」を選択します。

 

 

 

 

 

 

 

 

 

 

 

②チャットワークログイン時のパスワードを入力し、表示をクリックします。

③APIトークンが表示されるので、「コピー」をクリックします。


 

Googleカレンダーで新しいカレンダーを作成する

Googleカレンダーでチャットワーク用に新しいカレンダーを作成します。
既存のカレンダーと連携すると他の予定が消えてしまう可能性があるため、新規のカレンダーを作成することをおすすめします。

①Googleカレンダー画面から「新しいカレンダー」を作成する。
他のカレンダーの右にある「+」をクリックし「新しいカレンダーを作成」を選択する。
 

 
②作成したカレンダーの設定をします。
作成したカレンダーの︙をクリックし「設定と共有」を選択します。
 


 

カレンダーIDをコピーします。後ほどこのIDを使用します
 


 
 

GoogleドライブでGoogleAppsScriptを作成する

Googleドライブを開き、「+新規」ボタンからGoogleAppsScriptを選択します。
※ない場合は「+アプリを追加」からインストールしてください。
 


 

①無題のプロジェクトを立ち上げます。
赤枠は削除しておきます。
 


 

②以下のスクリプトをコピーし、スクリプトに貼り付けます。
 

/*—- 初期設定ここから—-*/

// チャットワークAPIトークンを設定
var ChatWorkToken = ‘チャットワークAPI’;

// googleカレンダーIDを設定 ※専用のカレンダーを作成することをオススメします
var CALENDAR_ID = ‘カレンダーID’;

/*—- 初期設定ここまで —-*/

// 識別キー
var SIGNATURE = “fromChatWork”;

/*—- メインFunction —-*/

function myFunction(){

// 最初にすべての予定をクリアする
clearAllEvents();

// ChatWork apiに投げるパラメータを設定
var params = {
headers : {“X-ChatWorkToken” : ChatWorkToken},
method : “get”
};

//未完了のタスクを取得するURL
var url = “https://api.chatwork.com/v2/my/tasks?status=open”;

//チャットワークAPIエンドポイントからレスポンスを取得
var strRespons = UrlFetchApp.fetch(url, params);

//レスポンスがない場合は終了
if(strRespons == “”) return false;

//レスポンス文字列をJSON形式として解析しJSONオブジェクトとして返す
var json = JSON.parse(strRespons.getContentText());

Logger.log( “未完了タスク数: ” + json.length );

// googleカレンダーオブジェクト作成
var calendar = CalendarApp.getCalendarById(CALENDAR_ID);

// タスク毎に予定を作成
json.forEach(function(obj) {

// タイトルを設定
var title = obj.body;
title = title.split(String.fromCharCode(10)).join(‘ ‘); // 改行をスペースに置換
title = title.replace(/\[/g, “<"); // chatworkのタグを "[" → "<" に変換 title = title.replace(/\]/g, ">“); // chatworkのタグを “]” → “>” に変換
title = title.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g, “”); // タグを削除
title = title.substring(0,50); // タイトルは50文字で切る

// 期限のないタスクの場合はログを残してスキップ
if( obj.limit_time !== 0 ){

// UNIXTIMEを変換してdateにセット
var date = new Date( obj.limit_time * 1000 );

// 説明欄を設定
var description = obj.body;
description += String.fromCharCode(10) + “——————————“;
description += String.fromCharCode(10) + obj.room.name; // ルーム名
description += String.fromCharCode(10) + “https://www.chatwork.com/#!rid” + obj.room.room_id; // ルームURL
description += String.fromCharCode(10) + “依頼者: ” + obj.assigned_by_account.name; // 依頼者

var options = {description: description};

// 終日のイベントを作成
var event = calendar.createAllDayEvent(title, date, options);

// イベントにタグ付け
event.setTag(SIGNATURE, “true”);
}
});
}

/*—- 前後1年間の予定をクリアするFunction —-*/

function clearAllEvents() {

// googleカレンダーオブジェクト作成
var calendar = CalendarApp.getCalendarById(CALENDAR_ID);

// 今日の日付取得
var date = new Date();
var d1 = new Date();
d1.setDate(1);
d1.setMonth(d1.getMonth()-12);
d1.setHours(0);
d1.setMinutes(0);
d1.setSeconds(0);

var d2 = new Date();
d2.setDate(1);
d2.setMonth(d2.getMonth()+12);
d2.setHours(0);
d2.setMinutes(0);
d2.setSeconds(0);

// 今日の年、月、日を格納
var year = date.getYear();
var month = date.getMonth();
var day = date.getDate();

// 予定を取得
var events = calendar.getEvents(d1,d2);

for (var i in events) {
var event = events[i];
event.deleteEvent();

}
}

 
③赤文字になっている「チャットワークAPI」と「カレンダーID」をそれぞれ置き換えます。
 

 
④保存ボタンをクリックし名前を付けて保存します。
 

スクリプトを実行する

①プルダウンメニューより「myFunction」を選択し▶ボタンをクリックしてスクリプトを実行します。
 

 
②実行の承認が求められるので「許可」ボタンを押します。
 

 
ログインをします。 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
許可をクリックします。
   

 
処理が完了すると、カレンダーに予定が追加されます。
 

 

トリガーを設定する

トリガーを設定すると、自動で最新タスクがカレンダーに反映されます。
時計マークをクリックし、トリガーを作成します。

 
追加ボタンを押すと作成画面が表示されます。
 

 
「myFunction」、「時間主導型」、「時間ベースのタイマー」、「1時間ごと」、「毎日通知を受ける」を選択し保存します。

1時間に1度、自動的にカレンダーに更新されるよう設定されました。

まとめ

いかがでしたでしょうか?普段の業務にチャットワークを利用される方も多いと思うので、連携ができると便利ですよね!
ぜひ一度ご活用ください!

関連する記事

Gmailから会議を打診!?Googleカレンダーを圧倒的に使いこなす方法

 

 

  • シェア
  • twitter
The following two tabs change content below.
藤堂 麻乃
インファクト東京でビジネスディベロッパーとして働いている藤堂です!
ベトナム・カンボジアに住んだことがあり、IT化の発展具合を目の当たりにしました!
インファクトではお客様のICT導入のサポートをさせていただいております。
お客様のお役に立つ情報を発信していきます!
  • twitter
  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP
LINE it!