LoginSignup
0
0

google formの回答をslackに送信して行う鍵の管理【安定版】

Posted at

はじめに

過去にあげていたgoogle formの回答をslackに送信して行う鍵の管理から安定して利用していた状態のものを紹介します。

実装

準備

準備でやることは以下のサイトから

google form

鍵の選択リスト(複数選択可)をつくります。
Screenshot 2024-03-28 at 22.54.40.png

またその鍵の状態(1つ選択のみ)をつくります。
Screenshot 2024-03-28 at 22.55.47.png

デフォルトで質問を必須項目にするメールアドレスを収集するを忘れずに。

コード

書き換え必要なところにコメント入れてます。

function onFormSubmit(event) {
  var scriptProperties = PropertiesService.getScriptProperties();

  var email = event.response.getRespondentEmail();
  var name = getNameFromEmail(email);

  var message = "<!everyone> " + name + "\n";
  var timestamp = event.response.getTimestamp();
  var date = new Date(timestamp);
  var formattedDate = Utilities.formatDate(date, "JST", "yyyy/MM/dd HH:mm:ss" + "\n");
  message += "時間: " + formattedDate;
  message += "────\n今回の操作:\n";

  var items = event.response.getItemResponses();
  var selectedKeys = [];
  var status = "";

  for (var i = 0; i < items.length; i++) {
    var response = items[i].getResponse();
    var title = items[i].getItem().getTitle();
    if (title === "鍵の部屋番号(複数選択可)") { //google formの質問タイトル
      selectedKeys = Array.isArray(response) ? response : [response];
    } else if (title === "状態") { //google formの質問タイトル
      status = response;
    }
  }

  for (var i = 0; i < selectedKeys.length; i++) {
    scriptProperties.setProperty(selectedKeys[i], status);
    message += selectedKeys[i] + "" + status + "\n";
  }

  message += "────\n全ての鍵の状態:\n";

  var allKeys = ["101", "102", "201", "A-1"]; //google formに用意した部屋番号
  var maxLength = allKeys.reduce((max, key) => Math.max(max, key.length), 0);

  for (var i = 0; i < allKeys.length; i++) {
    var keyStatus = scriptProperties.getProperty(allKeys[i]) || "借りてません";
    var paddedKey = allKeys[i].padEnd(maxLength, ' ');
    message += paddedKey + "" + keyStatus + "\n";
  }

  message += "────\n";
  message += "フォーム:" + "yourgoogle_form_link" + "\n"; //メッセージにgoogle formのリンク載せる

  UrlFetchApp.fetch(
    "your_webhook_url", // Webhook URLを入れる
    {
      "method": "POST",
      "contentType": "application/json",
      "payload": JSON.stringify({ "text": message })
    }
  );
}


//// メールアドレスと名前の対応表(メールアドレス:名前)////
var emailNameMapping = {
  "aaaaaaaaaaa@qiita.ac.jp": "A田A郎",
  "bbbbbbbbbbb@qiita.ac.jp": "B下B子",
  "bbbbbbbbbbb@qiita.ac.jp": "C本C彦",
};
////////////////////////////////////////////////////

// メールアドレスから名前を取得する関数
function getNameFromEmail(email) {
  return emailNameMapping[email] || email;
}

Slackに送られてくるもの

動くとこんな感じ。
Image 2024-03-28 at 23.03.jpg

おわりに

研究室の運用などに役立ててください。

0
0
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
0
0