[Chatwork×GAS]Chatworkに来訪通知を送る方法 | 独学プログラマーHiroのパーツボックスblog

[Chatwork×GAS]Chatworkに来訪通知を送る方法

chatwork来訪通知アイキャッチ画像 Chatwork
スポンサーリンク

グーグルフォームで必要事項を入力して送信したら、Chatworkに来訪通知を送る方法を説明します。

今回の来訪通知は、呼びたしたい担当者宛てでメッセージを送ります。

受付に専用のデバイスを用意せずグーグルフォームのURLリンクのQRコードを設置して来訪者のスマホから呼び出してもらいます。

この方法では、chatworkのアカウントない人でもグーグルフォームのリンクを知っている人で、インターネットに接続できるデバイスがあれば、どこからでもChatworkにメッセージ送信することができます。

同じ方法でほかの用途への流用が可能です。

例えば、社外業者からの集荷要求や、現場から管理者への呼び出しなど、用途はあなたのアイデア次第です。

それでは実際に構築していきましょう。

フロー概要

グーグルフォームで必要項目を入力して送信するとGoogle Apps Script(GAS)内で呼び出す担当者の情報を取得したりメッセージ内容を作成してChatworkに送信してメッセージを自動的に送信します。

chatwork来訪通知のフロー概要図

必要なもの

  • chatwork APIトークン
  • Chatwork来訪通知用グループチャットとチャットルームID
  • 呼び出す担当者のChatwork アカウントID(メッセージ送信用の番号)
  • googleアカウント(googleスプレッドシート、googleフォーム,GASを使用します)

Chatworkの設定と各種IDの取得

Chatwork API トークン

デスクトップアプリでは右上のユーザー名をクリックメニュー内の「サービス連携」をクリックします。

Chatworkのサービス連携メニュー画像

WEBブラウザが開きますので、APIトークンを選択して表示させます。

トークンをコピーしてメモ帳などで保存しておきます。

chatwork APIトークンの表示画面

(注意)自分のAPIトークンを使用して、自分宛てメッセージを送付するとプッシュ通知が機能しないので、通知用の専用アカウントでの運用をお勧めします。

来訪通知をするためのグループチャットを用意します。

同じ部署など複数人数で運用するように構築します。

もし一人用であれば、自分のマイチャットでの運用も可能ですが、前述のとおり自分宛ての送信ではプッシュ通知が機能しないことにご注意ください。

グループチャットを新規作成します。

グループチャット新規追加画像

チャットルームID

デスクトップアプリで調べる方法を説明します。

デスクトップアプリ右側の歯車マークをクリックして、チャットルームの設定ボタンを押すとウィンドウ下側に表示されます。

ChatworkアカウントID

調べ方は2つあります。

1つ目はメッセージを送るときのTOボタンで選択た後にテキスト打ち込み部に表示されるカッコ内の数字です。

2つ目はデスクトップアプリのアカウント名をクリックして表示される環境設定メニュー内に表示されます。

グループチャットに登録した人のアカウントIDを全て調べておいてください。あとでスプレッドシート内に登録します。

googleフォーム設定

googleフォームを新規作成します。

googleドライブから新規を選択して表示されるメニュー内からフォームを選択します。

googleフォームの新規追加画像

新しくフォームを追加したら、下記のように呼び出す担当者名の登録と来訪者の情報を入力する質問を追加してください。

呼び出す担当者が多い場合にはプルダウン形式でも良いです。

googleフォーム設定項目の画像

googleスプレッドシート設定

フォームから送信された結果の履歴保存と担当者のアカウントIDを登録するシートが含まれたスプレッドシートを用意します。

先ほど用意したフォームのプレビュー画面からテストデータを入力して送信してください。

googleフォームへ入力して送信する画像

送信完了後、再度フォームの設定の画面に戻り、回答タブを押します。

右側にスプレッドシートのアイコンがありますので押すとスプレッドシート作成ウィンドウが表示されますので、作成ボタンを押します。

先ほど送信した結果がスプレッドシートに記録されています。

フォームから送信されるとリアルタイムでこのスプレッドシートに結果が記録されるようになりました。

フォームの回答からスプレッドシートを作成する画像

回答が記録されるシートとは別に担当者のアカウントIDを登録するシートを新規作成します。

スプレッドシートウィンドウ下側のシート追加+ボタンを押してシートを追加して「社員toidマスタ」に名称を設定します。

シートの内容はA列に担当者の名前を入力し、B列にその担当者のアカウントIDを入力します。

社員アカウントID登録シートの追加画像

これでgoogleスプレッドシートの設定は完了です。

最後に、GASコード内で使用するスプレッドシートのIDを取得します。

スプレッドシートIDの画像

フォームにスクリプトを追加する

フォームの画面に戻り、右上の3個の点のボタンを押すとメニューが表示されますので、スクリプトエディタを選択します。

スクリプト追加操作画像

スクリプトエディタが表示されますので、後ほど開示するスクリプトコードをコピーして貼り付けます。

スクリプトエディタの画像

下記コードをコピーしてスクリプトエディタに張り付けてください。

chatwork APIトークン等、修正が必要な個所がありますので修正してください。

function send_chatwork(e) {
  //フォームに回答があったらchatworkにメッセージ送信する
  var itemResponses = e.response.getItemResponses();
  var tantou=itemResponses[itemResponses.length-2].getResponse();
  var kyakumei= itemResponses[itemResponses.length-1].getResponse();
  var now_time=Utilities.formatDate( new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
  
  //スプレッドシートに登録しているto_id番号を取得する
  var spreadsheet = SpreadsheetApp.openById('*********************'); //スプレッドシートIDを入力してください
  var sheet2 = spreadsheet.getSheetByName('社員toidマスタ');
  let lastRow = sheet2.getLastRow();
  
  var tantou_to_id="";
  for(let i = 2; i <= lastRow; i++) {
    if(sheet2.getRange(i, 1).getValue()===tantou){
      tantou_to_id=sheet2.getRange(i, 2).getValue();
    };
  };

  if (tantou_to_id!=""){
    var msgstring='[To:'+ tantou_to_id + ']'+ tantou +'さん '+kyakumei+'様が来社されました。対応してください。'+now_time;
  }else{
    var msgstring='[toall]'+tantou+'さんを訪ねて'+kyakumei+'様が来社されました。対応してください。'+ now_time; //to_idが取得できなかったらtoallで送信
  }
  //ここから下でchatworkに送信

  // 【編集対象】Chatwork APIトークン
  const token = '************************'; //chatwork APIトークンを入力してください
  var room_id = *********; //ルームIDを入力してください
  
  var params={
    headers : {"X-ChatWorkToken" : token}, //APIトークン
    method : "post",
    payload : {
      body : msgstring //メッセージ内容
    }
  };
  var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/messages";
  UrlFetchApp.fetch(url, params); //チャットワークAPIにリクエスト
};

貼り付けれたら保存してください。(フロッピーのマーク)

トリガーを設定する

フォームから送信されたらスクリプトが実行されるようにトリガー設定をおこないます。

スクリプトエディタ左側メニューの目覚まし時計マークのトリガーを選択すると画面が切り替わりますので、右下のトリガーを追加ボタンを押します。

トリガー新規作成画像

ウィンドウが開きますので、先ほどコピーしたスクリプトの関数を選択して、フォームから送信時にスクリプトが起動するように設定して保存のボタンを押します。

トリガー設定画面

動作確認

動作確認を行います。

来訪通知のフォーム画面でプレビューボタンを押して、実際に回答を送信します。

スクリプト実行1回目にセキュリティ確認画面が表示されますので許可してください。

下記画像は別のスクリプトの画像を流用しています。chatwork-archiveを来訪通知に読み替えてください。

googleセキュリティ画面
googleアプリセキュリティ画像
googleアプリセキュリティ詳細画像
googleアカウントアクセス許可画像

チャットワークの来訪通知用グループチャットを確認します。

Chatworkに自動的に投稿されれば設定完了です。

何回かフォームから送信しても投稿されない場合

スクリプトコードやトリガー設定などでエラーが発生している可能性があります。

スクリプトエディタの画面の左側メニュー実行数をクリックすると実行結果の一覧が表示されます。

スクリプトの実行結果確認画像

一覧の上が最新の実行結果になっています。「失敗しました」のステータスがあればクリックするとスクリプトの何行目でエラーが発生しているか確認できます。

スクリプトエディタ実行結果一覧画像

エラーの原因は、「各種IDの入力間違い」、「セキュリティ許可が完了していない」、「ChatworkAPIトークンのアカウントが来訪通知のグループチャットに投稿する権限が無い」などが考えられます。

もう一度確認をお願いします。

QRコードを用意する

動作確認ができたら、フォームの入力URLをQRコードにして受付に掲示します。

フォームのプレビューボタンを押してフォームが送信できる状態にしてURLをコピーします。

フォームのURL画像

下記サイトで入力欄にURLを貼り付けて作成ボタンを押すとQRコードが作成できます。

ダウンロードボタンを押すとpng形式でQRコード画像をダウンロードすることができます。

ダウンロードしたファイルを印刷するなどして受付に掲示します。

最後に

できるだけシンプルな仕様で構築してみました。

今回はメッセージ送信で来訪通知しました。タスクを担当者に割り付ける仕様でも構築は可能です。

python仕様ですが、処理内容はこちらの記事が参考になりますので、ご一読をお願いします。

担当者が休みの場合や会議中の場合の対応に関しては非対応となっています。

改善策としては、来客対応したらchatworkメッセージにリアクションするようにして、一定時間経過後メッセージにリアクションがされない場合にはtoallで全員に再通知されるようにするなどが考えられます。

あなたの思い通りになるように改造して活用してみてください。

Chatworkに関しての関連記事も多数ありますのでそちらもご確認ください。

コメント

タイトルとURLをコピーしました