みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Homeが我が家の生活を変えつつあります。
さて、前回の記事でGoogle Homeからの音声入力でマイチャットにメッセージを送信する方法をお伝えしました。
メッセージの送信ももちろん良いのですが、サッと音声入力で行いたい動作としては、「タスク追加」がありますよね。
ということで、今回はGoogle Homeからの音声入力でチャットワークにタスク追加する方法を紹介します。
とはいえ、基本は一緒。
- Google Homeに音声入力した内容をIFTTTでスプレッドシートに蓄積
- Google Apps Scriptを時限式で定期的に動作させる
- まだタスク追加していないデータについてチャットワークにタスク追加
という流れです。
では、行ってみましょう!
IFTTTでAppletを作成する
では、もう定番の流れになりつつありますが、IFTTTでAppletを作成するところからはじめます。
トリガーはGoogle Assistantでの音声入力、アクションはGoogole Driveのスプレッドシートの行追加、ということで、ほとんど前回と一緒です。
Google Assistantのトリガー設定
では、Google Assistantのトリガー設定です。
トリガーの種類は「Say a phrase with a text ingredient」を選択して頂いて、詳細の設定は以下の通りです。
今回のフレーズは「マイチャットに $ とタスク追加して」です。これぐらいの長さだと、若干訓練しないとカミますが…汗。
Google Driveのアクション設定
続いて、Google Driveのアクション設定。
アクションも前回同様、Google Driveの「Add row to spreadsheet」です。詳細は以下の通りです。
これでAppletは完成しました。
スプレッドシートの作成
スプレッドシートも前回とまったく同様のものを作成しておきます。
見出し行を
- A列:message
- B列:send
としておきます。
それで、Google Homeに
OK,Google。マイチャットに これはテストです とタスク追加して
マイチャットに これはテストです とタスク追加しました
と返ってきまして、スプレッドシートにも「これ は テスト です」というデータが追加されるはずです。
Google Apps Scriptでチャットワークにタスク追加するスクリプトを作成する
続いて、GASでチャットワークにタスク追加するスクリプトを作成します。
トリガーを乱立しないように、前回のスクリプトとドッキングすべく、以下前回のスクリプトをベースに進めていきます。
var rid = XXXXXXXX; //マイチャットのルームID var token = '--------------------------------'; //チャットワークAPIトークン function main() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); for(var i = 0; i < data.length; i++){ if(data[i][1] === ''){ sendMessage(data[i][0]); data[i][1] = 'send'; } } sheet.getRange(1, 1, data.length, data[0].length).setValues(data); } function sendMessage(body) { var client = ChatWorkClient.factory({token: token}); //チャットワークAPI client.sendMessage( { room_id: rid, //ルームID body: body } ); }
グローバル変数とメイン関数の変更
まず、グローバル領域と、main関数は以下のように変更しました。
前回、関数mainに含んでいたチャットワークにメッセージを送る処理は、関数sendMyChatに分離して呼び出すようにしました。
そして、mainにはaddTaskMyChatという今回新たに追加するタスク追加のための関数を呼び出すようにしています。
var rid = XXXXXXXX; //マイチャットのルームID var aid = XXXXXX; //アカウントID var token = '--------------------------------'; //チャットワークAPIトークン var taskSSId = '--------------------------------'; //「Google Homeからタスク追加」スプレッドシートのID function main() { sendMyChat(); addTaskMyChat(); } function sendMyChat() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); for(var i = 0; i < data.length; i++){ if(data[i][1] === ''){ sendMessage(data[i][0]); data[i][1] = 'send'; } } sheet.getRange(1, 1, data.length, data[0].length).setValues(data); }
グローバル領域ですが、まずチャットワークへのタスク追加の際にアカウントIDが必要になります。変数aidとして取得している部分です。
これは、自分自身のアカウントIDですが以下記事で取得方法がわかりますので、ご覧下さい。
また、taskSSIdは、スプレッドシート「Google Homeからタスク追加」のスプレッドシートIDとなります。
以下、スプレッドシートを開いた際のURLの{ID}の部分です。
このIDさえあれば、別のスプレッドシートにバインドされているスクリプトからでもアクセスできるようになっちゃうんです。
チャットワークにタスクを追加する
続いて、チャットワークにタスクを追加する処理です。
mainから呼び出される関数addTaskMyChatと、実際にチャットワークにタスク追加をする関数addTaskです。
function addTaskMyChat() { var sheet = SpreadsheetApp.openById(taskSSId).getSheets()[0]; var data = sheet.getDataRange().getValues(); for(var i = 0; i < data.length; i++){ if(data[i][1] === ''){ addTask(data[i][0]); data[i][1] = 'send'; } } sheet.getRange(1, 1, data.length, data[0].length).setValues(data); } function addTask(body) { var params = { headers : {"X-ChatWorkToken" : token}, //APIトークン method : "post", payload : { body : body, //タスクの内容 to_ids : aid //アカウントID } }; var url = "https://api.chatwork.com/v2/rooms/"; + rid + "/tasks"; UrlFetchApp.fetch(url, params); }
複雑そうに見えるかも知れませんが、addTaskMyChatは前述のsendMyChatとほとんど同じです。
そして、addTaskについては以下記事を参考で。
(ライブラリを使いたかったのですが、ライブラリはタスク期限の指定が必須っぽかったので、今回は自前で用意しています。)
トリガーの設定
トリガーの設定は、前回のままでOKです。
mainを呼び出せば、sendMyChatもaddTaskMyChatも両方とも呼び出してくれますからね。
Google Homeからチャットワークにタスク追加するテスト
これで、準備完了ですので、以下のフレーズをGoogle Homeに入力してみます。
OK,Google。マイチャットにこれはテストですとタスク追加して
マイチャットにこれはテストですとタスク追加しました
OK,Google。マイチャットにミルクを買うとタスク追加して
マイチャットにミルクを買うとタスク追加しました
すると、スプレッドシートには以下のようにデータが蓄積されます。
トリガーが発動すると、以下のようにチャットワークのマイチャットにタスクが追加されます。
これで、忘れては困るタスクも音声で入力できるようになりました…!
まとめ
Google Homeの音声入力でチャットワークにタスクを追加する方法についてお伝えしました。
ここまでくると、かなりちゃんと実用的かなと思います。
もちろん、TrelloとかAPI連携が可能な他のタスクツールとの連携も可能ということになります。
そもそも、Google HomeがIFTTTと連携している時点で、GASとも連携できるわけで、そうなると本当に世界が広がります。
ということで、他のGoogle Homeの便利な使い方がありましたら、紹介していきたいと思います。
どうぞお楽しみに!