Google Apps ScriptでTodoistとChatwork(チャットワーク)のタスク連携

チャットワークとtodoistの連携

この記事は、Google Apps Script Advent Calendar 2016の14日目の記事です。

昨年のアドベントカレンダーに続き、2度目の参加です。
前回はGmailの添付ファイルをGoogleDriveへ自動保存!GoogleAppsScript活用法という記事を書きました。

この記事は、Google Apps Script Advent Calendar 2015、17日目の記事です。 こんにちは。コスゲと申し...

さて、仕事でChatWork(チャットワーク)を使っている方も多いと思うのですが、ChatWork(チャットワーク)のタスク機能ってどうも個人的に使いづらいと感じています。

なので、Todoistなどのタスク管理アプリと連携させて、「タスク管理アプリにタスクを追加したら、ChatWork(チャットワーク)の特定グループにタスクが追加される」といった、一元管理ができないかを考えてみました。

そう、GoogleAppsScriptで。
今回は、タスク管理アプリTodoistとChatWork(チャットワーク)をタスク連携させるお話を書いてみたいと思います。

プログラムに慣れていない方でもできるように書いたつもりなので、プログラム以外の各種アプリケーションの設定方法も含めてかなり丁寧に色々書いていたら、だいぶ長文になってしまいました・・・あらかじめご了承いただければと思います!

ChatWork(チャットワーク)とTodoistのタスク連携のイメージ図

イメージとしてはこんな感じです。

Todoistとチャットワークのタスク連携イメージ

今回は、アプリケーション同士を連携させるサービスの代表であるIFTTT(イフト)も使用していきます!!
IFTTT(イフト)って何? という方は、下記などを拝見していただくのかがいいかもしれません!

IFTTT(イフト)のユーザー登録をしないと、そもそも今回のお話は成り立たないので、ご注意くださいね!

現時点では、IFTTT(イフト)の場合、直接TodoistとChatWork(チャットワーク)の連携ができません。
ここで登場するのがGoogleAppsScriptです!

IFTTT(イフト)では、TodoistとGoogle Driveを連携させることは可能です。
そして、Google Apps Scriptを使えば、Google Driveとチャットワークの自動連携をさせることが可能になります。

つまり、TodoistとChatWork(チャットワーク)の間にGoogleAppsScriptを介することによって、今回やろうとしているタスク連携を実現していきます!

今回は、Google Drive内に「todoist」というフォルダを作り、その中に「chatwork-todoist」という名前のスプレッドシートを作るという条件でお話を進めていきます!

TodoistとChatWork(チャットワーク)のタスク連携に必要なものを確認する

それではまず、TodoistとChatWork(チャットワーク)のタスク連携に必要なものを並べてみたいと思います。

アプリケーションとして必要なのは、以下の通りです。

  • ChatWork(チャットワーク)
  • Todoist
  • GoogleDrive(Googleアカウント)
  • IFTTT(イフト)

ChatWork(チャットワーク)側で必要なもの

Chatwork(チャットワーク)のロゴ

ChatWork(チャットワーク)側で必要なものとしては、以下があげられます。

ChatWork(チャットワーク)のAPトークンは、APIを利用するための許可証みたいなものです。
APIトークンががないと、GoogleAppsScriptから自動的にチャットワークに書き込みをすることができません。
いわば、書き込みを外部からしてもいいという、許可証ということですね!

ChatWork(チャットワーク)APIは現在プレビュー版での公開だそうなので、今後仕様が変わる可能性はあると思いますが、ひとまずトークンを使うための申し込みが必要になるため、上記に掲載したチャットワークの公式情報を参考に手続きをしてみるといいと思います!
(ちなみにAPIトークンが発行されるまで、数日かかります・・・)

今回の記事用のためにテスト用のChatWork(チャットワーク)グループを作成しました。
チャットワークとTodoistの連携テスト用グループ」という名前のグループ名にしていますが、ChatWork(チャットワーク)グループの名前は、日本語でも英語でも特に問題ないようです!

チャットワークのルーム

ChatWork(チャットワーク)グループを作成すると上記のような感じで出来上がります。まっさらな状態で、グループなのに、入っているのは自分だけという状態です。。。笑

Todoist側で必要なもの

todoistのロゴ
Todoist側では、今回のタスク連携のために使用する専用のプロジェクトを作成します。
今回は、ChatWork(チャットワーク)とTodoistの連携をするということで、「todoist-chatwork」という名前のプロジェクトを作成してみます。

チャットワークとtodoistをgoogle apps scriptで連携

Todoistでプロジェクトを作成すると上記のような感じになります。
ここで注意点なのですが、Todoistのプロジェクト名が日本語になっていると、今回実施しようとしているタスク連携がうまくいきません!
なので、Todoistのプロジェクト名は全て英語にしました!

今回のプログラムが完成すると、Todoistの「todoist-charwork」というプロジェクト内に追加されたタスクが、自動的にChatWork(チャットワーク)内の「チャットワークとTodoistの連携テスト用グループ」というグループ内のタスクとして、自動的に追加されるようになります。

IFTTT(イフト)でTodoistとGoogle Driveの連携をする

まずは、IFTTT(イフト)を使って、「TodoistとGoogleDriveの連携」をします。
具体的には、「Todoistにタスクを登録したら、Google Drive内のスプレッドシートに登録したタスクを記録する」というレシピを登録します。

せっかくなので、レシピの登録方法も解説します!
(IFTTT(イフト)へのユーザー登録はした状態でご覧になってくださいね!)

1、New Appletを選択

iftttのログイン後の画面

IFTTT(イフト)のログイン後の画面で、「New Applet」を選択します。

2、Todoistを「+ This」のアプリケーションとして選択し、必要な設定をする

IFTTTのレシピ登録画面
画面が進むので、「+This」となっているところを選択します。

todoistを選択

トリガー選択画面になったら「New task created」を選択します。

iftttでtodoistを選択

Todoistのプロジェクト選択画面になったので、今回作成した「todoist-chatwork」というプロジェクトを選択します。

3、Google Driveを「+that」のアプリケーションとして選択し、必要な設定をする

ifttt5

続いて、「+that」のアプリケーションとして、GoogleDriveを選択します。

googledriveをiftttのthatのアプリケーションとして設定

アクション選択画面では「Add row to Spreadsheet」を選択します。

ifttt7

Add row to Spreadsheetの詳細設定、つまり「どのスプレッドシートに記録するのか」だったり、「タスク情報のうち何をスプレッドシートに記録するのか?(日付、タスク内容、優先度etc・・・)」を選択します。

注意点としては下記が挙げられます。

  • SpreadsheetName → タスク保存先のスプレッドシートの名前を設定。英語で設定する。
  • Formatted row →タスク情報の何をスプレッドシートに記録するかを設定。日付、タスク内容、優先度etc…
  • Drive folder Path → スプレッドシートのGoogle Driveのどこのフォルダに設定するかを指定。

特に注意しなければならないのは、「Drive folder path」です。

この後、スプレッドシートを作って、そこからGoogleAppsScriptを立ち上げていくのですが、この後作成するスプレッドシートの場所と、Drive folder pathで指定する場所を一致させないと、今回ご紹介するプログラムではおかしなことになります。

今回は、冒頭のあたりでもお伝えしたように、GoogleDrive内に「chatwork-todoist」という名前のスプレッドシートを作るという条件でお話をしているので、Drive folder Pathには「todoist」とだけ入力します。

この時点で、「Todoistにタスクを登録すると、自動的にGoogle Drive内のスプレッドシートにタスクが書き込まれる」という部分が完成します。

todoistとGoogle Driveの連携

具体的には上記のように、Todoistにタスクを追加していくと、Google Drive内の特定のスプレッドシートに、1行ずつタスクが書き込まれていくというものです。タスクを追加すれば追加するほどスプレッドシートの行は増えていきます。

ちなみに、IFTTT(イフト)のレシピの仕様上、2,000行を超えると、新しいスプレッドシートが生成されるようになっているようです。

GoogleAppsScriptでチャットワークにタスク登録をするプログラムを用意する

次に、Google Apps Scriptに定義した関数が実行されたら、チャットワークに自動的にタスクが登録されるというプログラムを書きます。

先ほどまでの作業で作成されている、GoogleDrive内の「chatwork-todoist」というスプレッドシートを立ち上げて、さらに「ツール→スクリプトエディタ」から、GoogleAppsScriptのエディタを開きます。

そしてエディタ内にGoogleAppsScriptを入力します。
具体的に書くスクリプトは、以下の通りです。


function addTestTask() {
 
  //チャットワークのタスクの追加場所をAPIトークンとルームIDで設定
  var token = 'ここにチャットワークAPIトークンを入れる'; //チャットワークAPIトークン
  var room_id = "ここにチャットワークのルームIDを入れる"; //ルームIDを設定
 
  //スプレッドシードの最終行のA列に書かれている値をタスクとして取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var lastrow = ss.getLastRow();
  Logger.log(lastrow);
  var task = ss.getRange("A"+lastrow).getValue();
  
  
  //チャットワークに追加する時のタスク投稿内容を設定
  var params = {
    headers : {"X-ChatWorkToken": token}, //APIトークン
    method : "post",
    payload : {
      body : task, //タスクの内容
      to_ids : "ここにチャットワークの自分のアカウントIDを入れる" 
    }
  };
  
  
  //実際にチャットワークに投げてみる
  var url = "https://api.chatwork.com/v1/rooms/" + room_id + "/tasks"; //チャットワークのエンドポイントを設定
  UrlFetchApp.fetch(url,params); //チャットワークAPIによって実際にリクエストをする
 
}


チャットワーク関連で必要なIDがいくつかあるので、確認の上入力する必要があります。
基本的にはチャットワーク APIドキュメントを見れば、大概のことは書かれているので、各種IDの確認方法を知りたい方は、一度ドキュメントを読んでみることをお勧めします!

ここまでの時点で、「TodoistとGoogleDriveの連携」と「GoogleDriveとChatWork(チャットワーク)の連携のためのプログラムの用意」ができた形になります。
最後に、GoogleAppsScriptを実行するタイミングを調整するために、トリガーを設定して、完成にこぎつけていきます!

GoogleAppsScriptでトリガーを設定する

GoogleAppsScriptのプログラムを入力したら、次はトリガーの設定をします。
Google Apps Scriptにおけるトリガーとは、「特定の時間にプログラムを実行する」だったり「スプレッドシートの値が変更されたら、プログラムを実行する」といったように、GoogleAppsScriptのプログラムを自動的に動かす条件を設定することができるものです。

todoist-chatwork3

今回、トリガーは「スプレッドシートの値が変更されたら、プログラムを実行する」というものにしました。
上述したように、今回のプログラムが実行されると、スプレッドシートにタスクが1行ずつ追加されていくので、必ず「スプレッドシートの値の変更」が発生します。

なので、「スプレッドシートの値が変更されたら、プログラムを実行する」という条件をGoogleAppsScriptのトリガーに設定すれば、

  • Todoistでタスクが追加されたら、IFTTT(イフト)での連携によって、スプレッドシートにタスクが自動的に書き込まれる
  • スプレッドシートにタスクが書き込まれる = 値が変更されるということなので、仕込んでおいたGoogle Apps Scriptが自動的に実行される
  • チャットワークのグループにタスクが自動追加される

という流れが出来上がります。
これで、今回のプログラムが完成になります!

無事に完成! GoogleAppsScriptでTodoistとChatwork(チャットワーク)のタスク連携

それでは、完成した今回のプログラム、どうなるかを見てみましょう!

todoistにタスクを追加

まずはTodoistにタスクを追加します。

スプレッドシートにタスクが書き込まれる

Google Drive内のスプレッドシートを見てみると、IFTTT(イフト)での連携によって、タスクが書き込まれているのがわかります。
ちなみにTodoistにタスクを追加してすぐにGoogle Drive内のスプレッドシートにタスクが書き込まれるわけではないようで、状況によって5分〜10分くらい時間がかかるみたいです・・・

そしてチャットワークを見てみると・・・

チャットワークにタスクが追加されている図

チャットワークのグループにもタスクが追加されているのがわかります!
無事に、完成することができました。

今回は単純にタスクの内容を自動連携させただけですが、期の設定されたタスクも自動連携させることはできるようなので、今後はその辺も実装してみたいとおもいます!

まとめ

ということで、半分ネタのつもりでやってみたら、思いの外長文になってしまいました・・・

Zapierなどを使えばGoogleAppsScriptを使わずに連携させることもできるかもしれませんが、今回はGoogleAppsScriptを使用するという縛りがあるので、今回のようなことを考えてみました。

何かの参考になれば・・・なるのだろうか・・・

Google Apps Scriptで仕事・作業の効率化! 実践レシピシリーズ一覧

  1. Google Apps Scriptで物販商品在庫管理ツール簡易版を作った
  2. GoogleAppsScriptでメールの添付データをGoogleDriveへ自動保存
  3. Google Apps ScriptでTodoistとChatwork(チャットワーク)のタスク連携

シェアする

  • このエントリーをはてなブックマークに追加

フォローする