Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する

# はじめに
有料のアカウントを使用していて、会議室はそのアカウントで作成する運用となっています。その会議室に人が集まってきたりしたら、雑談したいので入退出をslackで監視したいな、という要望で作業しました。メモとして残します。
会議室を作るアカウントでWebhookを使い、イベントをGASに飛ばしてGAS側でSlackに通知を出します。


## 目次
### Slackの設定
 他の方のわかりやすい記事があったので引用します。[@ykhirao](https://qiita.com/ykhirao)さん
  [Slack API 推奨Tokenについて](https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21)

### GASの設定
  1. シートの作成
  2. Slackライブラリの追加
  3. ウェブアプリケーションとして導入

### Zoomの設定
  1. マーケットプレイスへアクセス
  2. Webhookの設定
  3. 通知を飛ばしたいイベントの登録をする
  
## 内容
### GASの設定
<!-- リンク先(目次部分のリンクの飛び先) -->
 1. シートの作成
 
　　1-a.シートを作成して名称、シート名を適当に変更
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/b04a11a1-da59-03f9-961f-671d3b327425.png">
　　1-b.スクリプトエディタを起動する
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/a7476f8f-f193-9e0d-8f2c-7dcce4009ee9.png">
　　1-c.プロジェクト名と、スクリプト名を適当に変更
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/c32652fb-c152-4853-5937-1d52dfe2856a.png">
　　1-d.doPost関数を作成する
　　sheetUrlのところは、1-aで作成したシートのurlにする。シート名も作成したシート名に変更。
　　slackのTokenはslackの設定で作成したものに置き換える
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/de58fb80-6693-c213-81b7-e6ac0d850b8b.png">

```
var sheet="meetings";
var sheetUrl="https://docs.google.com/spreadsheets/d/14xxxxxxxxxxxxxxxxxxuU/";
var ss = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheet);

function doPost(e) {

    //Zoom Webhookから受信
  const jsonString = e.postData.getDataAsString();
  const data = JSON.parse(jsonString);
  
  var event = data.event;
  var topic = data.payload.object.topic;
  var username = data.payload.object.participant.user_name;
 
  //Zoomのeventを取得し、動作を決定する
  ss.insertRows(1,1);
  ss.getRange(1,1).setValue(jsonString);
  var message = "";
  switch(event) {
    case 'meeting.started':
      message = '新しく' + topic + 'のZoomミーティングが開始されました';
      break;
      
    case 'meeting.ended':     
      message = topic + 'のZoomミーティングが終了しました';
      break;
      
    case 'meeting.participant_joined':     
      message = topic + 'のZoomミーティングに' + username + 'が参加しました';
      break;
      
    case 'meeting.participant_left':     
      message = topic + 'のZoomミーティングから' + username + 'が退出しました';
      break;
      
    default:

      break;
      
  }
  
  sendSlack(event,message);
  
}

function sendSlack(meetingname,message){
  var token = "xoxp-000000000000-000000000000-000000000000-00000000000000000000000000000000"; //slackApp token
  var slackApp = SlackApp.create(token);//SLack App
  var channel="チャンネルの名前";//通知するチャンネル
  
  return slackApp.postMessage(channel,message);

 }
```

<a id="anchor2"></a>
2. Slackライブラリの追加
　　2-a.リソース - ライブラリ
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/847a6017-9f9d-59e0-64e5-aded41273268.png">
　　2-b. Add a library のテキストボックスに[M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO]を入れて追加
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/cc58b826-d45d-2b57-ba9a-f959b1cc4dc1.png">

```
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
```
　　2-c. バージョンを最新のものに設定しておく
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/98fe5fda-c558-2af2-1621-c2f45dfb147c.png">

<a id="anchor3"></a>
3. ウェブアプリケーションとして導入
　　3-a. 公開　ー　ウェブアプリケーションとして導入
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/0662ad58-0c32-d754-ff43-76870ead3332.png">
　　3-b. Who has access to the app をAnyone, even anonymousにする
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/3df15c6f-2eea-d173-a178-b8251449c7ea.png">
　　3-c. 実行許可を与える
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/f8a69d0f-c2d1-4686-26c2-5ad7464e51dc.png">
　　3-d. デプロイされるので、urlをコピーしておく
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/d2cda472-b6c2-1fb3-d4fb-12420645e340.png">

### Zoomの設定
<!-- リンク先(目次部分のリンクの飛び先) -->
<a id="anchor4"></a>
1. [マーケットプレイスhttps://marketplace.zoom.us](https://marketplace.zoom.us
)
にアクセスする。監視したいZoomのIDでログインして、Develop -> build Appを選ぶ
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/7c7baba4-d561-80c4-15bd-790263c97fd8.png">
<a id="anchor5"></a>
2. Webhookの設定
　　2-a. Webhook Only でCreate を選ぶ
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/882b48ff-bc0f-5285-0f85-8f727c3ab3db.png">
　　2-b. 名前をつける
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/7657b02d-312b-59bd-4123-a6ee845666c8.png">
　　2-c. Basic Information,Developer Contact Informationの入力をする。
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/39fdb4c5-91bd-de48-83af-f0e3d760f9eb.png">
<a id="anchor6"></a>
3.通知を飛ばしたいイベントの登録をする
　　3-a. Event Subscriptionsのスイッチをオンにする。
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/3646714b-fbd9-4482-6f55-395d57e48407.png">
　　3-b. イベントを選ぶ。
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/bc8c3322-fb77-1a3e-579d-c7e5d839619b.png">
　　3-b. Event notification endpoint にGoogle ウェブアプリケーションのURLを設定してsaveボタンを押す
　　<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6323/f196cfa8-1f01-a323-403b-53418537d204.png">

以上で設定は完了です。Zoomで会議を作成すると指定したSlackのチャンネルに通知が飛びます