🐙

【議事録ファイルを自動で作成! Part 2】GASで作ったドキュメントをSlackに投稿する

2023/01/10に公開

はじめに

この記事は【面倒な議事録作成を簡単に! Part 1】 GASを使ってGoogle フォームからGoogle ドキュメントを作る方法の続きです。

前回の記事を読んでいなくても問題ないので、読んでいってください!
会議のたびに議事録を作るのが面倒くさいという方は、前回の議事録も読んでいただけると嬉しいです🙇

それでは、さっそく実装の方やっていきましょう!

Slackへの投稿を自動でやってくれるようにする

今回は、前回作成したドキュメントのリンクをSlackへ投稿していきます!

Slackへの投稿はIncomming Webhooksを使用して行います。

SlackでWebhooksを登録

投稿したいワークスペースに行き、「その他の管理項目 > アプリを管理する」をクリックします。

すると以下のような画面に飛ぶと思うので、検索ボックスでIncomming Webhooksを検索します。


Webhooksが見つかったら、Slackに追加します。

追加を押すと、投稿したいチャンネルが選べるので、自分が投稿したいチャンネルを選択してください。

ここまで完了すると、以下のようにWebhook URLが出てくると思うので、こちらをコピーしておきます。

GASでSlackに投稿

Webhookの登録が完了したら、スクリプトに戻ってコードを書きます。

/* 議事録が出来たときに投稿するslackのチャンネル */
const SLACK_CHANNEL_URL = "https://hooks.slack.com/services/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"

/* slackに投稿するための関数 */
function send(url, message) {
  // 投稿するメッセージ
  const text = message + '\n' + url;

  // 投稿者名とアイコンを設定する
  const data = {
     "username" : '議事録作成bot',
     "icon_emoji": ':man-tipping-hand:',
     text,
  };

  const params = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : JSON.stringify(data),
  };

  UrlFetchApp.fetch(SLACK_CHANNEL_URL, params)
}

SLACK_CHANNEL_URLには、先ほど取得したWebhookURLを入れます。

そして、createMinutes関数の最後に以下のコードを入れれば、Slackに投稿できるようになります。

/* slackへ投稿 */
  var url = file.getUrl();
  var message = "議事録が作成されました!"
  send(url, message);

Required Permissionsのエラーが出たら

※ もし、実行して権限周りのエラーが出ている場合はこちらをご覧ください。
https://zenn.dev/atomic/articles/831195249869ff

最終的なコード

※ Slackへの投稿だけをしたい場合は、うえのsend関数のみ使用してください。

/* フォームが回答されたら呼ばれる関数 */
function receiveFormData(e) {
  var answer1 = e.namedValues["無題の質問"][0];
  createMinute(answer1);
}

/* 議事録を作成する関数 */
function createMinute(answer1) {
  // 議事録ファイルの作成
  var fileName = answer1;
  var minutes = DocumentApp.create(fileName);
  var fileId  = minutes.getId();
  var body    = minutes.getBody();
  body.appendParagraph(answer1);
  var file    = DriveApp.getFileById(fileId);

  // ファイルを作成するフォルダーのアドレス
  var folder = DriveApp.getFolderById("18SrAAvFXocLbPZSVKBw3n2XuNrht0eod");

  //フォルダーにファイルを追加
  folder.addFile(file);

  /* slackへ投稿 */
  var url = file.getUrl();
  var message = "議事録が作成されました!"
  send(url, message);
}

/* 議事録が出来たときに投稿するslackのチャンネル */
const SLACK_CHANNEL_URL = "https://hooks.slack.com/services/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"

/* slackに投稿するための関数 */
function send(url, message) {
  // 投稿するメッセージ
  const text = message + '\n' + url;

  // 投稿者名とアイコンを設定する
  const data = {
     "username" : '議事録作成bot',
     "icon_emoji": ':man-tipping-hand:',
     text,
  };

  const params = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : JSON.stringify(data),
  };

  UrlFetchApp.fetch(SLACK_CHANNEL_URL, params)
}

おわりに

今回はGoogleフォームからGoogleドキュメントを作ってSlackに投稿する方法を紹介しました。
実際に、私が普段使っているコードでは、今回紹介したことに加え、以下のこともできます。

  • わざわざフォルダを開かなくても議事録が作れる
  • 会議の種類に応じて自動でフォルダ分けしてくれる
  • 何回目の会議なのか自動で数えてくれる
  • 曜日を確認しなくても自動で判定してくれる
  • 進行役、議事録担当を自動でローテしてくれる
  • ファイルの編集権限を自動で変更してくれる

これにより、フォームを送ったらすぐに会議が始められるように議事録を作成できます。
これらについての記事は、後日書くつもりなので、興味がある方はフォローやいいねしてお待ち頂けると嬉しいです。

記事なんか待ってらんねぇよという方は、以下のソースコード参考にしてみてください!
https://github.com/atomic928/auto_minutes_create

Discussion