目次
チーム内で勉強を促す!スプレッドシートとSlackの組み合わせテクニック
セクション内で共有したい、またはこれは知っておいてほしいといった情報を定期的に投稿したい!
そんなお悩みはありませんか?もう心配は不要です。
その重要な投稿を指定したスプレッドシートに自動でまとめる仕組みを作れば、問題は解決します。
では早速実装させる方法を以下にて説明します。
実現イメージ!!
スプレッドシートの入力情報
Slackへのアウトプットイメージ
Slackとスプレッドシートの連携にあたって準備するもの
- Google スプレッドシート(フリーアカウントでも可)
- Slack側の設定
Slack側の準備
Slack API画面へ
上記、Webhook URLをコピーしておく。
Googleスプレッドシート側の準備
Apps Scriptの画面へ
スプレッドシート及びGoogle Apps Script側の準備を記載していきます。
function postToSlack() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getDataRange();
const values = range.getValues();
const today = new Date();
today.setHours(0, 0, 0, 0); // 時間を0に設定して日付のみの比較をする
const webhookUrl = 'XXXX'; // SlackのWebhook URLに置き換えてください
values.forEach((row, index) => {
const dateCell = row[0]; // A列の値
const message = row[1]; // B列の値
const isChecked = row[2]; // C列の値(チェックボックス)
const rowDate = new Date(dateCell);
rowDate.setHours(0, 0, 0, 0);
// 今日の日付と一致し、まだチェックされていない行を探す
if (rowDate.getTime() === today.getTime() && !isChecked) {
// Slackにポスト
const payload = JSON.stringify({text: message});
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : payload
};
UrlFetchApp.fetch(webhookUrl, options);
// チェックボックスにチェックを入れる
sheet.getRange(index + 1, 3).setValue(true); // 1ベースのインデックスのため+1
}
});
}
上記 8行目にSlack のAPI画面で作成した Webhook URLを挿入します。
トリガーの設定
スプレッドシートのGoogle App Scriptの画面で設定を行います。
上記設定を行うと、毎日9-10時ごろに設定しておいたテキスト情報をSlackへ毎日投稿することが可能となります。
ぜひお試しください。