14
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

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

以上です!(^^)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?