Google Homeで音声入力した内容をGASとIFTTTを使ってチャットワークに送る


google-home

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

すっかりGoogle Homeで楽しんでおります。

前回、Google Homeで音声入力した内容をスプレッドシートに書き出す方法をお伝えしました。

Google Homeへの音声入力した内容をスプレッドシートに蓄積する方法
いよいよ買っちゃいました、Google Home。音声入力を使って問い合わせることができるのは、改めて画期的です。今回はIFTTTを使ってGoogle Homeで音声入力した内容をスプレッドシートに書き出す方法です。

スプレッドシート…まあ、役に立つ局面もあるような気もしなくもないですが、いまいちバッチリ役立つ感がないな~ということで、もうちょっと工夫してみました。

それも、Google Homeで音声入力した内容をチャットワークに送るというものです。

スプレッドシートに書き込めれば、Google Apps Scriptで世界が一気に広がるのです。

では、その方法をお伝えしていきます。

スポンサーリンク

IFTTTでAppletを作成する

まずは、IFTTTでAppletを作成していきます。

トリガーはGoogle Home(Google Assistant)での音声入力で、それに対するアクションはGoogle Driveのスプレッドシートの行追加となります。

Appletの作成方法は前回とほとんど一緒なので、前回記事もご参考ください。

Google Homeへの音声入力した内容をスプレッドシートに蓄積する方法
いよいよ買っちゃいました、Google Home。音声入力を使って問い合わせることができるのは、改めて画期的です。今回はIFTTTを使ってGoogle Homeで音声入力した内容をスプレッドシートに書き出す方法です。

Google Assistantのトリガー設定

Google Assistantのトリガーを設定します。

トリガーの種類は「Say a phrase with a text ingredient」で、詳細の設定は以下図の通りです。

IFTTTのGoogle Assistantのトリガー設定

今回のフレーズは「マイチャットに $ と送信して」です。anothor wayとして「マイチャットに $ と送って」も登録してみました。

Google Driveのアクション設定

続いてGoogle Driveのアクション設定です。

アクションはGoogle Driveの「Add row to spreadsheet」として、詳細は以下図の通りです。

IFTTTでGoogle Driveのアクション設定

今回出力するフィールドは{{Text Field}}のみとしました。

引き続き{{CreatedAt}}は出力されないということで、空の列があるとGASのスクリプト的にちょっと組みづらいので、なしとしました。

これでAppletは完成です。

スプレッドシートを作成

続いてスプレッドシートを作成しておきます。

スプレッドシートのほうは、IFTTTのアクションで設定したフォルダパスとスプレッドシート名にて作成し、見出し行を

  • A列:message
  • B列:send

などとしておきます。

(まあ、スプレッドシートが存在しない場合は、トリガー発生時にIFTTTの機能で自動で作成してくれますが)

そして、Google Homeへのテストで、以下のように話しかけて

OK,Google。マイチャットに これはテストです と送信して

マイチャットに これはテストです と送信しました

とかえってくればOKです。

以下のようにスプレッドシートに登録されているはずです。

Google Homeからの入力をスプレッドシートに蓄積

Google Apps Scriptでスクリプトを作成する

では、続いてスプレッドシートに入力された内容を元に、GASでチャットワークにメッセージを送信するスクリプトを作成します。

上記スプレッドシートのメニューから「ツール」→「スクリプトエディタ」を開くと、GASが入力できます。そこまで準備できれば次に進みましょう。

チャットワークのAPIを使用する準備

まずは、チャットワークのAPIを使用する準備です。

GASからチャットワークにメッセージを送信するために

  • 送信するルームID
  • チャットワークAPIトークン
  • ChatWorkClient for GASライブラリの追加

が必要になりますので、以下記事を参考に進めましょう。

Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
Google Apps Scriptの第一歩ですが、しょっぱなから真っ先にチャットワークを操作してしまいます。初回は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は

  1. スプレッドシートのデータを配列として取得
  2. B列が空欄なら、A列の値を渡してsendMessageを呼んで、配列に「send」と入力
  3. 配列をスプレッドシートに書き込み

という処理です。

sendMessageは、受け取ったbodyを指定のルームIDのチャットルームに送信するというものです。

イベントトリガーの設定

最後に、イベントトリガーの設定をします。

スクリプトエディタのメニューの「編集」→「現在のプロジェクトのトリガー」で設定をすることができます。

タイマーを設定しておけば、定期的にスプレッドシートでB列が空欄の行を見つけて、チャットワークに送信してくれるということです。

GASでイベントトリガーの設定

Google Homeからチャットワークに送信するテスト

これで準備完了です。

テストとして、以下のようにGoogle Homeと会話をします。

OK,Google。マイチャットにこれはテストですと送信して

マイチャットにこれはテストですと送信しました。

OK,Google。マイチャットに明日の3時に外出と送って

マイチャットに明日の3時に外出と送信しました。

すると、スプレッドシートには以下のように蓄積され、トリガーが発動すると「send」が入力されます。

GASが動作したスプレッドシート

チャットワークのマイチャットには以下のようにメッセージが送信されます。

Google Homeの音声入力をチャットワークに送信

バッチリです。楽しい…!

まとめ

以上、Google Homeで音声入力した内容をIFTTTとGASを使ってチャットワークに送信する方法についてお伝えしました。

ちょっとしたメモ、備忘録としてマイチャットに送っておくのは便利そうですよね。

さて、次回はGoogle Homeからチャットワークにタスクを追加してみたいと思います。

Google Homeから音声入力でチャットワークにタスクを追加する方法
今回は、Google Homeからの音声入力でチャットワークにタスク追加する方法を紹介します。IFTTT経由でスプレッドシートにデータを蓄積し、Google Apps Scriptにてチャットワークにタスク追加をします。

どうぞお楽しみに!


タイトルとURLをコピーしました