GoogleAppsScript
ifttt
GoogleAssistant
GoogleHome
スマートスピーカー

Google Home x IFTTTで、オフトゥンの中からチャットワークに午前休の連絡

スマートスピーカーIFTTT 大喜利 アドベントカレンダー11日目です。

布団から腕すら出さずに会社を休む [Google Home]を拝見し、チャットワーク版があったら面白いなぁと思って作りました。

なお自分が今勤めている会社は、勤怠連絡はメールベースです。つまりこの装置の実戦配備はしておりませんので、上司にバレたらどのくらい怒られるかの手探りをしてません!ご利用の際は、自己責任でお願いします。(笑)

やりたいこと

  • Google Homeに「ねぇグーグル、午前休したいんだけど」と言うと、会社のチャットワークに丁寧な文言で書き込みする。

スクリーンショット 2017-12-11 20.22.26.png

フロー

Google Home

IFTTT

Googleシートに、行追加

Google Apps Script
↓ 
Chatwork

作り方

チャットワークのAPIトークンの取得

  • フリープラン、パーソナルプランの場合、自分でAPI設定ページからチャットワーク社に申請する。
    こちら

  • 組織契約の場合、社内のチャットワーク管理者に依頼して発行してもらう必要がある。→ こちら

Googleシート作成

  • 名前:「午前休シート」

スクリーンショット 2017-12-11 20.29.57.png

1行目をヘッダ行とし、A列を日付、B列を休む内容にして、見出しを適当に入れておきます。

Google apps script作成

「午前休シート」の「ツール」>「スクリプトエディタ」で、
コード.gsファイルに、以下のようなコードを記入。

//チャットワークに投げる
function chatwork() {

 var roomId ='xxxxx'//休みを書き込みしたいチャットグループのルームID 
 var apiToken ='xxxxxxxxxxxxxxxxxxxxx'//発行したAPIトークンをここに書く
 var msgBody
  = "各位\nシュコドラン・ムスタフィです。\n"
  + "大変申し訳ないのですが、本日、体調不良のため午前休いたします。" 

 var client = ChatWorkClient.factory({token: apiToken});
 client.sendMessage({room_id: roomId, body: msgBody});    
}

//1列名に日時を書き込む
function addDate(e) {
    var lr = SpreadsheetApp.getActiveSheet().getLastRow();
    SpreadsheetApp.getActiveSheet().getRange(lr, 1).setValue(new Date());
}

※ルームIDとは、ttps://www.chatwork.com/#!rid**91578650**なら「91578650」。

Google Apps Scriptにライブラリを追加

cw-shibuyaさんの作られたライブラリを使わせていただきます。ありがたや。
こちらを参考にさせていただきました。
・「ライブラリを検索」欄には「M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT」を入力する。
・現時点でのバージョンは18なので、18を指定する。

テスト

「関数を選択」>「chatwork」を選ぶ。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3137333339322f66326464366264372d306539362d353833342d643537372d6536323138316435343035332e706e67.png

そのあと、「実行」の右下あたりにある右向きの三角アイコンを押す。
正常動作すれば、即時チャットワークにメッセージが飛ぶはずです!
メッセージの内容は、「もっと謝る気持ちが伝わるようにしたい」とかあると思いますので、好きなように書き換えます。

トリガーを仕掛ける

Google Apps Scriptの画面で時計アイコンをクリックします。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3137333339322f35313132663437642d613066612d313562312d323434362d3930313032343961646562342e706e67.png

ポップアップが出たら、「トリガーを追加します」的な文のところがリンクになってるのでクリックし、以下のように入力します。

スクリーンショット 2017-12-11 13.38.31.png

chatwork()のトリガー:Googleシートに行が追加されたときに、自動でGoogle Apps Scriptが動くようにするため。
addDate()のトリガー:IFTTTからGoogleシートに行が追加されたときに、日付が書き込まれないというバグがあるので、これを解消するため。

保存をクリックすると、認証画面に遷移します。
以下の警告画面が出て心臓がコトコトしますが、たった今自分が作ったスクリプトの保存なので、「詳細」のところを押して進みます。

そして冗談のようですが、以下の入力欄には日本語で「次へ」と打ち込んで、から、「次へ」リンクをクリックします。

テスト

スプレッドシートのB列に「午前休」と記入する
スクリーンショット 2017-12-11 20.42.08.png

すると、1秒弱でポンとA列に日時が記入される
スクリーンショット 2017-12-11 21.26.25.png

さらにチャットワークの該当のルームに書き込まれる
スクリーンショット 2017-12-11 21.26.21.png

ここまでできればoK、次はイフトを作ります!

IFTTTの作成

スクリーンショット 2017-12-11 13.57.09.png
スクリーンショット 2017-12-11 13.57.23.png
スクリーンショット 2017-12-11 13.57.38.png

IF

  • Google Assistant:"say a simple phrase"
  • What do you want to say?:午前休したい
  • What's another way to say it? (optional):ごぜんきゅうしたい
  • What do you want the Assistant to say in response?:イエスマイロード
  • Language:Japanese

Then

  • Google Sheets:add row to spreadsheet
  • Spreadsheet name:午前休シート

テスト

Google Homeに「ねぇグーグル、午前休したい」と言うと、チャットワークに投稿されたら、oKです。

最後に

ここまで書いて何ですが、Botアカウントではなく個人へのAPIトークンの発行を、会社の管理者に依頼する時点で、「怪しい、こいつは何か良からぬことを自動化しようとしている、まさか勤怠連絡では」と勘ぐられると思います。
で、思ったのですが、そもそも体調が悪いのに休めない方が問題で、休む連絡をしないよりした方が絶対によく、その連絡はGoogle Homeからやったって何ら問題はないはずなのです!
ですから逆に、チャットワークへの勤怠連絡はBot化して、堂々とGoogleHomeで送ったらええと思うのです(笑)

こうですね

勤怠連絡Bot
----
しとっぷたんです。
大変申し訳ないのですが、本日、体調不良のため午前休いたします。
緊急時連絡先:090-xxxx-xxxx
----

休みの理由くらいは、パラメタで渡すようにした方がいいかもですね。

勤怠連絡Bot
----
しとっぷたんです。
急で申し訳ないのですが、本日、私用で2時間ほど遅れます。
緊急時連絡先:090-xxxx-xxxx
----

とかね。

例えばスタートレックのThe Next Generation(ピカード艦長のやつ)では、音声で「コンピュータ、体調が悪いから当直ができないと、少佐に連絡してくれないか」などと連絡するわけです。上司がウォーフだったら死を覚悟しなければならないですが、クラッシャーだったらどうですか。データなら?ラフォージュなら? 人間だったら誰しも体調不良はありますし。音声で連絡を入れることは、特に悪くないと思うんです。いずれそうなっていくと思えば。

image.png

最初の頃のデータは痩せてたなぁ。。

以上です!(^^)