チャットワークAPIが楽しい②

前回は、PHPを使ってチャットワークにメッセージやタスクを追加してみましたが、今回はGoogle Apps Scriptを使って、スプレッドシートと連動して、スプレッドシートが更新されたら、チャットワークにもそのメッセージが届く、というシステムを作ってみたいと思います。

チャットワークの中の人が詳しく説明してくれています。
チャットワークAPIをGoogle Apps Scriptで使ってみた

まずはやってみよう!

テスト用にGoogleスプレッドシートを用意します。ツールから「スクリプトエディタ」を選択します。

プロジェクトの中に入れたら、プロジェクト名を決めます(無題のままだと怒られます)。リソースから「ライブラリ」を選択します。

ライブラリを追加」にChatWork Client for Google Apps ScriptプロジェクトキーM6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT」を追加します。最新バージョンを選択して保存します。

さあ、これでGoogle Apps Script内で、チャットワークと繋がることができるようになりました!次からついにJSです。

JavaScriptの記入

myFunctionの中にチャットワークへ送るメッセージを書いてみます。APIキーとルームIDは自分の環境に合わせて書き換えてください。

function myFunction() {
 
 var api = '自分のAPIトークン';
 var room_id = 'ルームID';
 var body = 'スプレッドシートに更新がありました。';
 
 var client = ChatWorkClient.factory({token: api});
 client.sendMessage({room_id: room_id, body: body});
}

赤い※は、まだ保存されていない、という意味です。右上のアイコンか、コマンド+Sで保存できます。

▶︎のアイコンでスクリプトを実行です。初めての実行の時は、承認を求められるので、画面に従い承認を行なってください。

認証が済んだら、もう一度▶︎の実行ボタンを押します。チャットワークにメッセージが表示されるはずです。

トリガーの設置

このままでも楽しいのですが、あまり使い道がないので、スプレッドシートが更新されたらチャットワークにメッセージを通知する、というトリガーを設置します。時計マークのアイコンをクリックすると「プロジェクトのトリガー」が表示されます。「myFunction」「スプレッドシートから」「編集時」に設定し、トリガーを保存します。おそらく再び承認を求められるので承認を行い、その後トリガーを保存します。

スプレッドシートを更新してみましょう!
スプレッドシートの更新と共に、チャットワークに「スプレッドシートに更新がありました。」と通知されるのが確認できます。

スプレッドシートの中身を取得する

スプレッドシートの内容を取得して、チャットワークに通知することも可能です。今回は単純に、A列が更新されたら、その内容をチャットワークに通知する、と作ってみます。

function myFunction() {
 
 var api = '自分のAPIトークン';
 var room_id = 'ルームID';
 
 // アクティブなシートを取得する
 var sht = SpreadsheetApp.getActiveSheet();
 // sht.getRange( y, x ).getValue(); でセルの中身を取得できます。
 
 var txt = '';
 var y = 2;
 while( sht.getRange( y, 1 ).getValue() != '' ) { // 空になるまで繰り返す
 txt += sht.getRange( y, 1 ).getValue() + "n";
 y++;
 }
 
 var body = '[info][title]スプレッドシートからだよ[/title]' + txt + '[/info]';
 
 var client = ChatWorkClient.factory({token: api});
 client.sendMessage({room_id: room_id, body: body});
}

見ればお分かりいただけると思いますが、単純にJSだけで制御できるので、丁寧に作り込めば、このカラムが更新されたら、や、値が一定数に達したら、など、チャットワークへの通知のタイミングも色々と拘ったりできると思います。