ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Google Home, IFTTT, Google Sheet, Slack連携

概要

Google Homeから最終的にSlackのチャンネルにポストするまでをためしてみた。 連携はIFTTTからGoogle Sheetへ書き込み、Google SheetからSlackへポストする流れとなる。

IFTTT連携(Google Home → Google Sheet)

My Applet タブから「New Applet」を洗濯 f:id:haronoid:20180721193840p:plain

Triggerを設定するため「+this」を選択 f:id:haronoid:20180721193928p:plain

Google Assistantを検索し、以下の画面から「Say a phrase with a text ingredient」を選択 f:id:haronoid:20180721194122p:plain

Google Homeがトリガとするキーワードと読み取る文字列($)を指定、今回は「受付」をトリガーにその後の文字列を訪問者名として認識する設定 f:id:haronoid:20180721194316p:plain

Triggerが終わるとAction指定のため「+that」を選択 f:id:haronoid:20180721194352p:plain

Action処理としてgoogle sheetを選択 f:id:haronoid:20180721194428p:plain

訪問者リストファイルのB2セルにトリガーで読み取った「$」が設定される様に設定 f:id:haronoid:20180721194527p:plain

Slack連携(Google Sheet → Slack)

これまでの設定が問題なければ、「OK Google 受付 ○○○」で指定したGoogle Sheetに内容が記録されるはず。

f:id:haronoid:20180721201556p:plain 訪問リストから、スクリプトエディターを選択し、以下のスクリプトを記載する。 (ソースは最後の参考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のトリガーを設定する。 f:id:haronoid:20180721202017p:plain 新しいトリガーとして、変更が発生したタイミングでshowStatusが実行される。 f:id:haronoid:20180721202038p:plain

ここまで、問題がなければ、指定したSlackのチャンネルにポストされるはず。

参考

qiita.com