10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Slack+Zapier+GoogleFormで秒で作る社内受付システム

Last updated at Posted at 2020-07-06

悩みつつ記事も書きつつ2時間で作れたよ
iPadのアクセスガイド機能を使ってsafari表示しているだけです
スクリーンショット 2020-07-09 16.07.27.png

アクセスガイド
https://support.apple.com/ja-jp/guide/ipad/ipada16d1374/ipados

概要

GoogleFormに投稿された受付内容をもとに、該当する特定のSlackチャンネルに通知することをしました
gasだとエンジニア以外の人が読み辛いので、今後の運用も考えて条件分岐はZapierにやらせています

formつくる

スクリーンショット 2020-07-06 8.13.42.png

form回答完了時に受付画面更新しない問題あるので、一応人力で戻してもらえるように案内する
スクリーンショット 2020-07-06 9.56.07.png

formの担当者欄をslackから抽出する

slackからメンバーリストをエクスポート
スクリーンショット 2020-07-06 8.16.04.png
csvでDLしたのをSpreadSheetにはりつける(こんなノリ、チェックとかあってないかも)
スクリーンショット 2020-07-06 8.20.06.png

Googleフォームのプルダウンにスプレッドシートの内容を反映させる(gasだけどまぁ止まってもそんなに問題はない)

今回はslackのdisplaynameを引用
overwriteMemberList() って名前のfuncにした
https://qiita.com/kobaboy/items/610263087d9c85d8458e
※これだとbotとかも入っちゃうからどうにかしたい気持ちはある
下記参考にして書いたやつ

function overwriteMemberList() {

  /**
  // スプレッドシートの情報を取得する
  // 
  **/
  //スプレッドシートのID →「https://docs.google.com/spreadsheets/d/△△△/edit#gid=0」の△△△を↓に記述
  var sheets = SpreadsheetApp.openById('△△△').getSheets();

  // シート1の情報を取得
  //(デフォルトのスプレッドシートの場合、シート1という名称になっています)
  var sheet = sheets[2];

  // スプレッドシートのA1のセルが「username」の場合
  if("username" == sheet.getRange("A1").getValue()){

    // A行の8行目(displayname)からコンテンツをもつ最後の行までの値を配列で取得する
    var colA = sheet.getRange(8, 1, sheet.getLastRow() - 1).getValues();
  }

  /**
  // Googleフォームのプルダウン内の値を上書きする
  // 
  **/

  // GoogleフォームのIDを設定 →「https://docs.google.com/forms/d/〇〇〇/edit」の〇〇〇を↓に記述
  var form = FormApp.openById('〇〇〇');

  // 質問項目がプルダウンのもののみ取得
  var items = form.getItems(FormApp.ItemType.LIST);

  items.forEach(function(item){
    // 質問項目が「担当者名がおわかりでしたらお選びください」を含むものに対して、スプレッドシートの内容を反映する
    if(item.getTitle().match(/担当者名がおわかりでしたらお選びください.*$/)){
      var listItemQuestion = item.asListItem();
      var choices = [];

      colA.forEach(function(name){
        if(name != ""){
          choices.push(listItemQuestion.createChoice(name));
        }
      });

      // プルダウンの選択肢を上書きする
      listItemQuestion.setChoices(choices);
    }
  });

}

月イチ更新トリガーにする
スクリーンショット 2020-07-06 8.41.15.png

formの回答からSpreadSheet作成

スクリーンショット 2020-07-06 8.51.03.png

GoogleSpreadSheet更新時にslackに通知が飛ぶようにZapierでzapを組む

全体図
スクリーンショット 2020-07-06 10.06.19.png

上から
New Spreadseet Raw: 列追加でActionする
スクリーンショット 2020-07-06 9.52.16.png

Filter: 訪問先名でfilterかけてる
スクリーンショット 2020-07-06 9.52.48.png

Send Channel Message in Slack: 特定のSlack Channelにメッセージを送信
スクリーンショット 2020-07-06 9.53.06.png
こまいことにbot Iconなどを設定した
raikyaku.png

結果

スクリーンショット 2020-07-06 10.14.58.png

運用

このformを開いたままにしているiPadとかiPhoneを会社受付に設置すればOK!

メンションは今度作る!おわり!

10
6
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
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?