たった15分で完成!Google Apps Script × SlackでGoogle Calendarの翌日予定を自動通知してみた!
こんにちは!
今回、Google Apps Scriptを使って「毎日18時台に翌日のGoogle Calendar予定を自動送信する仕組み」を作ってみました。
【自動送信メッセージの例】
📅 明日のスケジュール(6月10日(月))
⏰ 09:00 朝会
⏰ 11:00 プロジェクトキックオフ
⏰ 14:00 お客様との打ち合わせ
⏰ 16:00 週次チームミーティング
合計 4件 の予定があります。良い1日を!
Slackを確認するだけで、翌日の準備ができるようになりました。
作りたいもの
- 毎日18時台に自動実行される
- Google Calendarから翌日の予定を取得する
- 自分が参加承諾した予定・自分が主催者の予定のみ表示する
- 終日イベント(勤務場所・休暇など)は除外する
- 土日の前日(金・土)は通知しない(月〜金の予定のみ対象)
- 予定がない日は「明日は予定されているミーティングはありません」と送る
構成要素
| 項目 | 使用ツール |
|---|---|
| スクリプト | Google Apps Script |
| カレンダー連携 | Google Apps Script |
| メッセージ送信 | Slack Incoming Webhook |
| 自動実行 | Google Apps Scriptトリガー |
サーバーも不要、Googleアカウントがあれば誰でも始められます。
STEP 1:Slack Incoming Webhook URLの発行
手順
1. Slack APIページにアクセス
https://api.slack.com/apps にアクセスします。
2. アプリを作成する
「Create an App」 をクリック → 「From scratch」 を選択します。

「From a manifest」と「From scratch」の2つがありますが、From scratchは画面を見ながら直接設定する方式です。

アプリ名を入力(例:Meeting Notifier)→ ワークスペースを選択 → 「Create App」 をクリックします。

3. Incoming Webhooksの設定
左側のメニューから 「Incoming Webhooks」 をクリックします。
アプリ作成直後はBasic Informationの画面が表示されますが、ここでは何もしなくて大丈夫です。
左のメニューから直接Incoming Webhooksに移動してください。
スイッチを On に変更します。

4. チャンネルにWebhookを追加
「Add New Webhook to Workspace」 または 「Request to Add New Webhook」 をクリックします。
管理者の設定によってボタンの表示が異なる場合があります。
Requestボタンが表示される場合でも、Webhookの追加自体は可能なことが多いです。
メッセージを入力し、「Submit Request」を押下します。

「Add New Webhook」を押下します。

通知を送りたいチャンネルを選択して 「許可する」 をクリックします。

個人チャンネルがおすすめ
Webhookで送信したメッセージは後から削除できません。
テストから個人用チャンネルを作って試すと安心です。
5. Webhook URLをコピー
以下のようなWebhook URLが生成されます。コピーしておいてください。
https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXX

STEP 2:スクリプトを作成する
スクリプト
Script
// ===== 設定エリア(ここだけ修正すればOK)=====
const SLACK_WEBHOOK_URL = 'YOUR_SLACK_WEBHOOK_URL'; // Webhook URLをここに入力
// ===== メイン関数 =====
function sendTomorrowSchedule() {
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(0, 0, 0, 0);
// 翌日が土曜(6)または日曜(0)なら何もしない
const tomorrowDay = tomorrow.getDay();
if (tomorrowDay === 0 || tomorrowDay === 6) {
Logger.log('翌日は週末のため通知をスキップ');
return;
}
const dayAfterTomorrow = new Date(tomorrow);
dayAfterTomorrow.setDate(dayAfterTomorrow.getDate() + 1);
// 翌日の予定を取得
const calendar = CalendarApp.getDefaultCalendar();
const events = calendar.getEvents(tomorrow, dayAfterTomorrow);
// 日付フォーマット
const weekdays = ['日', '月', '火', '水', '木', '金', '土'];
const month = tomorrow.getMonth() + 1;
const date = tomorrow.getDate();
const weekday = weekdays[tomorrowDay];
const dateStr = `${month}月${date}日(${weekday})`;
// メッセージ作成
let messageText = `📅 *明日のスケジュール(${dateStr})*\n\n`;
// 終日イベントを除外 + 参加承諾済み(YES)または自分が主催者の予定のみフィルタリング
const acceptedEvents = events.filter(event => {
if (event.isAllDayEvent()) return false;
const myStatus = event.getMyStatus();
return myStatus === CalendarApp.GuestStatus.YES ||
myStatus === CalendarApp.GuestStatus.OWNER;
});
if (acceptedEvents.length === 0) {
messageText += '明日は予定されているミーティングはありません。';
} else {
acceptedEvents.forEach(event => {
const startTime = Utilities.formatDate(
event.getStartTime(),
Session.getScriptTimeZone(),
'HH:mm'
);
messageText += `⏰ ${startTime} ${event.getTitle()}\n`;
});
messageText += `\n合計 *${acceptedEvents.length}件* の予定があります。良い1日を!`;
}
// Slackに送信
const message = { text: messageText };
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
Logger.log('送信完了: ' + dateStr);
}
STEP 3:Google Apps Scriptにデプロイする
1. Apps Scriptを開く
- https://script.google.com/ にアクセス
- 新しいプロジェクト をクリック
- エディタの既存コードを全て削除して、上記のコードを貼り付け
- YOUR_SLACK_WEBHOOK_URL の部分をSTEP 1でコピーしたURLに書き換え
- Ctrl+S で保存


2. 権限を許可する
- 上部の関数選択欄で 「sendTomorrowSchedule」 を選択
- 実行ボタン (▶) をクリック
- 「権限を確認」 をクリック
- 自分のGoogleアカウントを選択
- すべて選択にチェックして 「続行」 をクリック


3. 動作確認
翌日の参加予定のミーティングが設定されている場合、Slackの指定チャンネルに以下のようなメッセージが届いたら成功です。

4. トリガーの設定(毎日自動実行)
- 左メニュー → 時計アイコン (トリガー) をクリック
- 右下の トリガーを追加 をクリック
- 以下のように設定

- エラー通知は 「毎日通知を受け取る」 を選択
- 保存 をクリックして完了







