LoginSignup
5
3

More than 5 years have passed since last update.

定例議事録を自動で作ってSlackに通知する

Last updated at Posted at 2019-01-17

動機

弊社では毎週金曜日に事業部のAndroidエンジニアが集まって定例を行なっています。各々のプロジェクトの進捗や困っていること、最近気になった技術記事の共有などが目的です。話す内容は、定例までに共通のGoogleDocumentに各々書いておきます。
共通のGoogleDocumentは前日にリードエンジニアが用意してSlackで通知しています。この作業自体は大した労力はいりませんが、業務に追われて忘れてしまった場合スムーズに定例を始められません。そこで自動化してしまおうというのが動機です。

コード

GoogleAppScriptを使います。コードの全容は以下です。


var postUrl = 'SlackのIncoming WebhookのURL';
var username = 'hogehoge';  // 通知時に表示されるユーザー名
var icon = ':hatching_chick:';  // 通知時に表示されるアイコン

function createAndroidMTGDocument() {
  var fileName = "hogehoge";
  var fileId = "テンプレートファイルのID";

  var date = new Date();
  date.setDate(date.getDate() + 1);
  var formattedDate = Utilities.formatDate(date, "JST", "yyyyMMdd");

  var f = DriveApp.getFileById(fileId);
  //コピーを作成。作成したコピーを参照。
  f = f.makeCopy(fileName + "_" + formattedDate);
  f.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.EDIT);

  // Slack通知
  var url = f.getUrl();
  var message = "Android定例の議事録です。\n" +url
  var jsonData =
  {
     "username" : username,
     "icon_emoji": icon,
     "text" : message
  };
  var payload = JSON.stringify(jsonData);

  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };

  UrlFetchApp.fetch(postUrl, options);
}

なんとなく意味は分かるのではないかと思いますが、以下解説です。

解説


var fileName = "hogehoge";
var fileId = "テンプレートファイルのID";

ファイルの作成をしています。あらかじめ議事録のテンプレートファイルを用意しておき、fileIdにテンプレートファイルのIDを格納します。


var date = new Date();
date.setDate(date.getDate() + 1);
var formattedDate = Utilities.formatDate(date, "JST", "yyyyMMdd");

ファイル名のsuffixに定例の開催日を入れるための処理です。定例前日に議事録を作成するために今日の日付+1をしています。


var f = DriveApp.getFileById(fileId);
//コピーを作成。作成したコピーを参照。
f = f.makeCopy(fileName + "_" + formattedDate);
f.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.EDIT);

テンプレートファイルをコピーしてアクセス権限の変更をしています。権限の変更についてはコチラを参照してください。

// Slack通知
var url = f.getUrl();
var message = "Android定例の議事録です。\n" +url
var jsonData =
{
   "username" : username,
   "icon_emoji": icon,
   "text" : message
};
var payload = JSON.stringify(jsonData);

var options =
{
  "method" : "post",
  "contentType" : "application/json",
  "payload" : payload
};

UrlFetchApp.fetch(postUrl, options);

Slackの通知はコチラのページが非常に分かり易かったので参照してください。

これをGoogleAppScriptで定期実行することで、議事録を作成してSlackに通知することができます。

おわりに

指摘大歓迎です。

5
3
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
5
3