みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
すっかりGoogle Homeで楽しんでおります。
前回、Google Homeで音声入力した内容をスプレッドシートに書き出す方法をお伝えしました。
スプレッドシート…まあ、役に立つ局面もあるような気もしなくもないですが、いまいちバッチリ役立つ感がないな~ということで、もうちょっと工夫してみました。
それも、Google Homeで音声入力した内容をチャットワークに送るというものです。
スプレッドシートに書き込めれば、Google Apps Scriptで世界が一気に広がるのです。
では、その方法をお伝えしていきます。
IFTTTでAppletを作成する
まずは、IFTTTでAppletを作成していきます。
トリガーはGoogle Home(Google Assistant)での音声入力で、それに対するアクションはGoogle Driveのスプレッドシートの行追加となります。
Appletの作成方法は前回とほとんど一緒なので、前回記事もご参考ください。
Google Assistantのトリガー設定
Google Assistantのトリガーを設定します。
トリガーの種類は「Say a phrase with a text ingredient」で、詳細の設定は以下図の通りです。
今回のフレーズは「マイチャットに $ と送信して」です。anothor wayとして「マイチャットに $ と送って」も登録してみました。
Google Driveのアクション設定
続いてGoogle Driveのアクション設定です。
アクションはGoogle Driveの「Add row to spreadsheet」として、詳細は以下図の通りです。
今回出力するフィールドは{{Text Field}}のみとしました。
引き続き{{CreatedAt}}は出力されないということで、空の列があるとGASのスクリプト的にちょっと組みづらいので、なしとしました。
これでAppletは完成です。
スプレッドシートを作成
続いてスプレッドシートを作成しておきます。
スプレッドシートのほうは、IFTTTのアクションで設定したフォルダパスとスプレッドシート名にて作成し、見出し行を
- A列:message
- B列:send
などとしておきます。
(まあ、スプレッドシートが存在しない場合は、トリガー発生時にIFTTTの機能で自動で作成してくれますが)
そして、Google Homeへのテストで、以下のように話しかけて
OK,Google。マイチャットに これはテストです と送信して
マイチャットに これはテストです と送信しました
とかえってくればOKです。
以下のようにスプレッドシートに登録されているはずです。
Google Apps Scriptでスクリプトを作成する
では、続いてスプレッドシートに入力された内容を元に、GASでチャットワークにメッセージを送信するスクリプトを作成します。
上記スプレッドシートのメニューから「ツール」→「スクリプトエディタ」を開くと、GASが入力できます。そこまで準備できれば次に進みましょう。
チャットワークのAPIを使用する準備
まずは、チャットワークのAPIを使用する準備です。
GASからチャットワークにメッセージを送信するために
- 送信するルームID
- チャットワークAPIトークン
- ChatWorkClient for GASライブラリの追加
が必要になりますので、以下記事を参考に進めましょう。
スクリプトを作成する
続いて、GASのスクリプトを作成していきます。
スクリプトはこちら。あ、ちなみに、ルームIDと、チャットワークAPIトークンは皆さんで取得したものを入力してくださいね。
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は
- スプレッドシートのデータを配列として取得
- B列が空欄なら、A列の値を渡してsendMessageを呼んで、配列に「send」と入力
- 配列をスプレッドシートに書き込み
という処理です。
sendMessageは、受け取ったbodyを指定のルームIDのチャットルームに送信するというものです。
イベントトリガーの設定
最後に、イベントトリガーの設定をします。
スクリプトエディタのメニューの「編集」→「現在のプロジェクトのトリガー」で設定をすることができます。
タイマーを設定しておけば、定期的にスプレッドシートでB列が空欄の行を見つけて、チャットワークに送信してくれるということです。
Google Homeからチャットワークに送信するテスト
これで準備完了です。
テストとして、以下のようにGoogle Homeと会話をします。
OK,Google。マイチャットにこれはテストですと送信して
マイチャットにこれはテストですと送信しました。
OK,Google。マイチャットに明日の3時に外出と送って
マイチャットに明日の3時に外出と送信しました。
すると、スプレッドシートには以下のように蓄積され、トリガーが発動すると「send」が入力されます。
チャットワークのマイチャットには以下のようにメッセージが送信されます。
バッチリです。楽しい…!
まとめ
以上、Google Homeで音声入力した内容をIFTTTとGASを使ってチャットワークに送信する方法についてお伝えしました。
ちょっとしたメモ、備忘録としてマイチャットに送っておくのは便利そうですよね。
さて、次回はGoogle Homeからチャットワークにタスクを追加してみたいと思います。
どうぞお楽しみに!