Code Monkey home page Code Monkey logo

slack-status-updater's Introduction

Slack Status Updater

自分の位置領域を常に把握し、Slack ユーザーステータスに反映するアプリです。

構成

Slack API トークン取得

非推奨のレガシートークンを使う手もありますが、ちゃんと OAuth トークンの取得方法を載せておきます。

↓アプリを作成します。

↓ワークスペースに対するアクセス権限を定義します。 自分のユーザー情報を変更できる権限のみをユーザートークンに設定します。 これでトークンが悪意のある第三者に知られても、あなたの情報を変更することしかできません。

↓インストールします。

↓権限を許可すると、トークンが生成されます。

Google Apps Script 作成

↓Spreadsheet に紐付くスクリプトを作成します。 Spreadsheet は、IFTTT Webhook で受信したデータのストレージとして機能します。

↓スクリプトエディタを開きます。

スクリプトをコピペし、Slack トークンをはじめとした必要な情報を埋めます。

↓IFTTT の Webhook となる Web App をデプロイします。

↓Execute the app as: Me (自分が実行), Who has access to the app: Anyone, even anonymous (誰でもアクセス可) となっていることに注意してください。

↓Web App の次は、トリガーを追加します。

↓実行する関数は update です。また Spreadsheet の内容をポーリングすることになるので、実行頻度は短めにします。

↓ちなみにスクリプトの実行ログはここで見れます。

Google Calendar 予定を追加

在宅勤務を想定する以上、特定の場所にいるだけでステータスを決定するわけにはいきません。寝ている間もずっと働いてることになってしまいます。カレンダーの予定も考慮することにしましょう。

↓このような形で、その日はどこで働くのかわかるように、場所をタイトルに含めた予定をまとめてドカンと追加しましょう。画像では、休暇を入れながら、原則として月曜だけ出社することにしています。

IFTTT レシピ作成

在宅勤務、職場勤務、この 2 つの場所のレシピを作成します。今回は 2 つだけですが、場所の数だけレシピは必要です。

↓まずは、在宅勤務レシピの This を作成していきます。

↓This は、Location サービスを設定します。

↓入出の情報が欲しいので、トリガーは左下の "You enter or exit an area" にします。

↓あなたの家の場所を範囲指定します。範囲が広すぎても狭すぎてもよくないので、ちょうどいい感じに調整します。

↓今度は That です。

↓That は Webhooks にします。入出のタイミングで Web App を実行してもらうためです。

Location で設定した位置範囲に来た時、Google Apps Script の Web App に、entered または exited という文字列が POST されます。 それぞれ、範囲への入と出を表します。 URL は Web App をデプロイした際に取得できる URL の末尾に ?place={場所名} を追加しておきます。場所名は、レシピによって異なるので以下を参考に設定してください。

  • 在宅勤務レシピ URL に追加する文字列: ?place=%E5%9C%A8%E5%AE%85
  • 職場勤務レシピ URL に追加する文字列: ?place=%E8%81%B7%E5%A0%B4

JavaScript の実行環境があれば、以下の要領で場所名を作成できます。

encodeURIComponent('在宅') == '%E5%9C%A8%E5%AE%85'
encodeURIComponent('職場') == '%E8%81%B7%E5%A0%B4'

↓レシピの名前を設定して完了です。

↓Connected になっていることを確認します。

同じ要領で「職場勤務」レシピも作成したら完成です!

slack-status-updater's People

Contributors

oshinko avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.