はじめに
今年もアドベントカレンダーの時期がやってきましたね🎄
と、導入を書いていたらもうクリスマス当日でした😵💫
さっそく今回作った兄弟をご紹介します。
今回作ったもの
議事録お知らせくん
弊団体の運営ミーティングではGoogleドキュメントを使用して議事録を取っています。議事録はその週に発生した議題をメモしておく役割も持つため、MTG終了時に次回分を作成するのが理想ですがこれがめんどくさくてよく忘れちゃうんですね〜
というわけで今回はGoogleドキュメントの議事録テンプレート作成を自動化していきます。ついでに作成した議事録のURLをSlackに通知する機能もつけます。
Googleドキュメントを作成する
なんとGoogleドキュメントの作成は以下のプログラムで簡単にできちゃいます!
// 新しいドキュメントを作成する
function createDocument() {
DocumentApp.create("New");
}
ただ、このプログラムでは作成した新しいドキュメントがマイドライブの一番上の階層に作成されてしまいます。ファイルを指定の階層に移動させるプログラムを追記していきましょう。
// 新しいドキュメントを作成する
function createDocument() {
var doc = DocumentApp.create("New");
var docId = doc.getId();
moveFile(docId);
}
// 指定のフォルダに移動させる
const moveFile = (ID) => {
//移動するファイル
const file = DriveApp.getFileById(ID);
//移動先のフォルダ
const destinationFolder = DriveApp.getFolderById("フォルダID");
//ファイルの移動
file.moveTo(destinationFolder);
};
フォルダIDは移動させたいフォルダのURLの以下の部分です。コピペしてください。
https://drive.google.com/drive/u/0/folders/ここの文字列
Slackbotの準備
なんとなく新しいドキュメントの作成はできたので通知機能を作っていきます。
このページにアクセスし、投稿したいSlackチャンネルを選んでIncoming Webhookインテグレーションの追加
を選択。
インテグレーション設定の中にWebhook URL
が記載されているのでメモしておきましょう。
Slack通知機能
議事録が作成されたことをSlackでお知らせする機能を追加していきます。
// 通知するSlackチャンネルのWebhook URL
const SLACK_URL = 'さっきメモしたURL';
// 新しいドキュメントを作成する
function createDocument() {
// 省略
var docUrl = 'https://docs.google.com/document/d/' + docId + '/edit';
var jsonData = {
"text" : "📝 来週の議事録" + "\n\n" + docUrl
}
postToSlack(jsonData);
}
// 指定のフォルダに移動させる
const moveFile = (ID) => {
// 省略
};
//Slackへ通知する
function postToSlack(jsonData) {
var payload = JSON.stringify(jsonData);
var options = {
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(SLACK_URL, options);
}
プログラムを実行してみると...
おおお!無事成功しました〜〜
ドライブの方にも新しい議事録が追加されていたので大成功です🙌🏻
自動実行
最後に、GASの便利さを存分に享受して自動実行の設定をしていきます。
トリガーを追加
を選択し、好みの日時に関数が実行されるように調整してください。
というわけで、議事録お知らせくんが完成しました!
ドキュメントのタイトル及び中身をきれいにする
いったん前の項目までで機能自体はできましたが、まだテンプレートとしては不十分なのでタイトルや中身を調節していきます。
// 新しいドキュメントを作成する
function createDocument() {
let date = new Date();
let oneWeekLater = new Date(date.getTime() + 6 * 24 * 60 * 60 * 1000);
let month = oneWeekLater.getMonth() + 1;
let day = oneWeekLater.getDate();
let title = "[" + month + "/" + day + "]" + " PJWミーティング";
var doc = DocumentApp.create(title);
var docId = doc.getId();
var docUrl = 'https://docs.google.com/document/d/' + docId + '/edit';
var body = doc.getBody();
var cells = [
[title +"\n\n参加者 : \n議事録 : "]
];
body.appendTable(cells);
// 省略
}
実行するとこんな感じになります。
まあ、ぎり及第点かな...笑
中身についてはこれからもちょっとこねこねしようと思います。
おわりに
最後まで読んでいただきありがとうございました!
クリスマス当日にぎりぎり滑り込めました🎅🏻
皆様良いお年を〜
ps.なぜ兄弟なのかずっと気になっている人へ
🌟タスクお知らせくんの記事はこちら🌟
https://qiita.com/fuki_01/items/a841166b547e323baeaa