【Slack】ステータスをGoogleカレンダーから自動反映【対応不可時間がわかる！】

## 課題
いつ対応ができないのかGoogleカレンダーを見ないとわからない

## 結論
GoogleカレンダーとSlackを連携し、**対応できないタイミングでは画像のように「不在」の予定を作成する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/fcfed5f8-d768-5fe1-fdfd-f22e31b0dbcb.png)

すると、以下のように**不在アイコンと、いつまで不在なのかをSlackの名前の横に表示できます！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/4a6fc3af-bdd8-2e80-d8be-d47fc79db849.png)


## カレンダーとSlackを連携する方法(所要時間:5分程度)

### 1. (ワークスペースのオーナーのみ)SlackにGoogleカレンダーアプリを追加する
https://slack.com/intl/ja-jp/help/articles/206329808-Google-Calendar-%E3%81%A8-Slack-%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B#:~:text=Slack%20%E3%81%AB%20Google%20Calendar%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B


1. Slack Marketplace の Google カレンダーのページにアクセス
https://slack.com/marketplace/ADZ494LHY-google-calendar

2. 「Slack に追加」をクリック
3. 「許可する」をクリックして、Google Calendar による Slackへのアクセスを許可する
メッセージに従い、「Slack を開く」をクリックしてワークスペースに戻る

### 2.(連携したいカレンダーの所有者が対応)アカウントとカレンダーを連携させる
https://slack.com/intl/ja-jp/help/articles/206329808-Google-Calendar-%E3%81%A8-Slack-%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B#:~:text=%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B-,Google%20%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B,-Google%20Calendar%20%E3%82%A2%E3%83%97%E3%83%AA

1. 「自動化」をクリック
2. 「App」を選択
3. Google Calendarを検索して選択し、アプリを開く
4. アプリの「ホーム」タブから「アカウントを連携させる」をクリック
5. ステータスの同期を「on」にする

## その他のステータスの表示

### In a meeting
「予定あり」の場合は全て「In a meeting」と表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/ee72eac1-7379-b399-f677-266324fc67c3.png)

**サイレントモードで予定を作成した場合も、「In a meeting」と表示されます。** (便利！)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/6e9470ba-8b9a-1024-d03c-78ff2430bfe1.png)

ちなみにこういったMeetingではない予定も「In a meetingになってしまいます。（ちょっと不便？）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/4e03132b-10c2-4577-af54-07cb0ea31aab.png)

#### 「In a meeting」と表示しない方法
用途によって「予定」以外のカレンダーを作成するのが良さそうです。

##### 1.「勤務場所」を指定する
稼働予定などを書くのに良さそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/223cb1f1-5b30-3525-43f9-bf6674aed458.png)

##### 2.「タスク」として作成する
自分は大体やることを時間で指定しないとやらないタイプなので助かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/727c350d-1f63-aa4b-2fdb-05ce183a052c.png)

##### 3.「予定なし」の予定を作成する
プルダウンで指定できます。
まあ面倒なので「勤務場所」と「タスク」をうまく使うのが良さげではあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667105/c8cda45e-e37b-7da9-e8ab-655b7bf243a6.png)

### 「In a meeting」以外のステータスを表示する
例えば、カレンダーの「移動中」とかも「🚃」などで表現したいというニーズがあるかもしれません。
Slack側では用意してなさそうなので、GASを使って自分で作る必要がありそうです。

まだやってないのでわかりませんが、以下の記事が参考になりそうです。
https://qiita.com/aAyakaYamamoto/items/253e9becb54a8d3eaaa9

弊社では一旦「out of office」と「In a meeting」で対応しようと考えています。

## そのほか詳しい仕様

・ステータスはいつでもSlack側で削除・更新ができます。ユーザー本人が設定した内容を Google Calendar アプリが上書きすることはありません。 

・参加を承諾したイベント、または「予定あり」にマークしたイベントのみが、Slack のステータスに反映されます。 

・カレンダーでイベントが重複している場合、ユーザーのステータスを Google Calendar アプリが更新することはありません。

https://slack.com/intl/ja-jp/help/articles/206329808-Google-Calendar-%E3%81%A8-Slack-%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B#:~:text=%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82-,Slack%20%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B,-%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E4%BD%BF%E3%81%86

## まとめ
Googleカレンダーってめっちゃ便利ですね！
面白かったです。