日々の学習や業務の中で新しい学びを得ることは多いですが、1回触れただけではすぐ忘れてしまいますよね。
今回は、Googleスプレッドシートにあらかじめ溜めておいた「写経リスト」から、今日の内容だけを毎朝Slackに通知してくれるBotの作り方を紹介します。これで定期的に学びを振り返ることができます。
仕組み
- スプレッドシートに「内容」と「日付」をズラッと書いておく
- GAS(Google Apps Script)が毎日自動で起動
- 今日の日付の行を見つけて、Slackに通知する
1. スプレッドシートの準備
スプレッドシート(シート名:シート1)を以下のように用意します。
- A列: 写経するテキスト(コードや文章)
- B列: 通知したい日付(yyyy/MM/dd)
- C2セル: 空けておく(ここに実行ログが出ます)
今回はスクラムガイドを写経Bot化します。
2. GASコード
事前にSlackでIncoming Webhookを作成しておいてください。
const CONFIG = {
SHEET_NAME: 'シート1',
LOG_CELL: 'C2',
// ここにSlackのIncoming Webhook URLを貼る
SLACK_WEBHOOK_URL: 'https://hooks.slack.com/services/xxxxx/yyyyy',
BOT_USERNAME: 'transcribot', // Botの名前
BOT_ICON: ':bulb:' // Botのアイコン
};
function postToSlack() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.SHEET_NAME);
const today = new Date();
const logs = [`today: ${today}`];
const lastRow = sheet.getLastRow();
// データがない場合は終了
if (lastRow < 2) {
logs.push("Error: データが存在しません。");
finalizeLog(sheet, logs);
return;
}
// 2行目から最終行までのデータを取得 (A列:B列)
const data = sheet.getRange(2, 1, lastRow - 1, 2).getValues();
let messageSent = false;
for (const [content, dateValue] of data) {
// 日付型かつ、今日の日付と一致するか確認
if(dateValue instanceof Date && isSameDate(dateValue, today)) {
postMessageToSlack(content);
logs.push(`メッセージを投稿しました: ${content}`);
messageSent = true;
break; // 1日1件見つけたら終了
}
}
if (!messageSent) {
logs.push("skip: 本日投稿するメッセージはありません。");
}
finalizeLog(sheet, logs);
}
/**
* ログをセルに書き込むヘルパー関数
*/
function finalizeLog(sheet, logArray) {
sheet.getRange(CONFIG.LOG_CELL).setValue(logArray.join('\n'));
}
/**
* 日付のみ(年・月・日)を比較するヘルパー関数
*/
function isSameDate(date1, date2) {
return date1.toDateString() === date2.toDateString();
}
/**
* SlackへPOSTリクエストを送る関数
*/
function postMessageToSlack(message) {
const payload = {
"text": message,
"icon_emoji": CONFIG.BOT_ICON,
"username": CONFIG.BOT_USERNAME
};
const options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(CONFIG.SLACK_WEBHOOK_URL, options);
} catch (e) {
console.error("Slack投稿エラー: " + e.toString());
}
}
このままでは動かないので「トリガー」を設定して定期実行させてください。
まとめ
これで、毎朝指定した時間になると、Slackに今日の写経内容が届きます!

