LoginSignup
3
7

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-08-21

はじめに

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

目次

Slackの設定

他の方のわかりやすい記事があったので引用します。@ykhiraoさん
Slack API 推奨Tokenについて

GASの設定

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

Zoomの設定

  1. マーケットプレイスへアクセス
  2. Webhookの設定
  3. 通知を飛ばしたいイベントの登録をする

内容

GASの設定

  1. シートの作成

  1-a.シートを作成して名称、シート名を適当に変更
  
  1-b.スクリプトエディタを起動する
  
  1-c.プロジェクト名と、スクリプト名を適当に変更
  
  1-d.doPost関数を作成する
  sheetUrlのところは、1-aで作成したシートのurlにする。シート名も作成したシート名に変更。
  slackのTokenはslackの設定で作成したものに置き換える
  

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);

 }


2. Slackライブラリの追加
  2-a.リソース - ライブラリ
  
  2-b. Add a library のテキストボックスに[M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO]を入れて追加
  

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

  2-c. バージョンを最新のものに設定しておく
  


3. ウェブアプリケーションとして導入
  3-a. 公開 ー ウェブアプリケーションとして導入
  
  3-b. Who has access to the app をAnyone, even anonymousにする
  
  3-c. 実行許可を与える
  
  3-d. デプロイされるので、urlをコピーしておく
  

Zoomの設定

  1. マーケットプレイスhttps://marketplace.zoom.us
    にアクセスする。監視したいZoomのIDでログインして、Develop -> build Appを選ぶ
      
  2. Webhookの設定
      2-a. Webhook Only でCreate を選ぶ
      
      2-b. 名前をつける
      
      2-c. Basic Information,Developer Contact Informationの入力をする。
      

    3.通知を飛ばしたいイベントの登録をする
      3-a. Event Subscriptionsのスイッチをオンにする。
      
      3-b. イベントを選ぶ。
      
      3-b. Event notification endpoint にGoogle ウェブアプリケーションのURLを設定してsaveボタンを押す
      

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

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7