Google Home, IFTTT, Google Sheet, Slack連携
概要
Google Homeから最終的にSlackのチャンネルにポストするまでをためしてみた。 連携はIFTTTからGoogle Sheetへ書き込み、Google SheetからSlackへポストする流れとなる。
IFTTT連携(Google Home → Google Sheet)
My Applet タブから「New Applet」を洗濯
Triggerを設定するため「+this」を選択
Google Assistantを検索し、以下の画面から「Say a phrase with a text ingredient」を選択
Google Homeがトリガとするキーワードと読み取る文字列($)を指定、今回は「受付」をトリガーにその後の文字列を訪問者名として認識する設定
Triggerが終わるとAction指定のため「+that」を選択
Action処理としてgoogle sheetを選択
訪問者リストファイルのB2セルにトリガーで読み取った「$」が設定される様に設定
Slack連携(Google Sheet → Slack)
これまでの設定が問題なければ、「OK Google 受付 ○○○」で指定したGoogle Sheetに内容が記録されるはず。
訪問リストから、スクリプトエディターを選択し、以下のスクリプトを記載する。 (ソースは最後の参考URL本家のソースのそのままである。ただし、今後変更予定)
function showStatus() { var mySheet = SpreadsheetApp.getActiveSheet(); // シートを取得 var currentRow = mySheet.getActiveCell().getRow(); // 更新行を取得 var myCell = mySheet.getActiveCell(); // アクティブなセルの取得 if(myCell.getColumn() == 2) { //数字の部分には列番号(この場合B列) // 更新日時をA1に記録する var updateRange = mySheet.getRange('A' + currentRow); updateRange.setValue(Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/M/d H:m:s')); var text = myCell.getValue() + '様が来訪されました'; slackPost(); // 更新行を記述するため1行追加 mySheet.insertRowBefore(2); } function slackPost() { var url = 'https://slack.com/api/chat.postMessage'; var token = 'xoxp-xxxxxxxxxxxxxx'; var channel = '#チャンネル名'; var username = '来訪通知'; var parse = 'full'; var icon_emoji = ''; var method = 'post'; var payload = { 'token' : token, 'channel' : channel, 'text' : text, 'username' : username, 'parse' : parse, 'icon_emoji' : icon_emoji }; var params = { 'method' : method, 'payload' : payload }; var response = UrlFetchApp.fetch(url, params); } }
※ Slack Tokenは以下のリンクから生成することが可能 https://api.slack.com/custom-integrations/legacy-tokens
最後に、Google Sheetのトリガーを設定する。 新しいトリガーとして、変更が発生したタイミングでshowStatusが実行される。
ここまで、問題がなければ、指定したSlackのチャンネルにポストされるはず。