「毎朝、今日の予定をLINEで確認できたら便利なのに…」と思ったことはありませんか?Googleカレンダーに登録したタスクを、毎朝自動でLINEに通知する仕組みをGAS(Google Apps Script)で構築できます。この記事では、LINE Messaging APIとGASを連携させて「今日のタスク自動通知Bot」を作る方法をゼロから解説します。
設定は30〜60分程度で完了します。プログラミング経験がなくてもコピペで動く実用的なコードを用意しましたので、ぜひ最後まで読み進めてください。
この記事でできること
- 毎朝指定した時刻にLINEへ「今日の予定一覧」を自動送信
- Googleカレンダーの複数カレンダーをまとめて取得・通知
- 終日イベント・時間指定イベントを区別して見やすく表示
- GASのトリガーで完全自動化(スマホ操作不要)
事前準備(約20分)
以下の準備が必要です。
- LINEアカウント(個人アカウントでOK)
- LINE Developersアカウント(無料)
- Googleアカウント(Googleカレンダー・GASで使用)
LINE DevelopersでMessaging APIチャンネルを作成し、「チャンネルアクセストークン(長期)」と自分のLINE「ユーザーID」を取得しておきます。ユーザーIDはLINE DevelopersのWebhook設定画面で確認できます。
STEP 1:LINE Messaging APIのチャンネル作成
LINE Developers(https://developers.line.biz/)にログインし、以下の手順でチャンネルを作成します。
- 「プロバイダーを作成」→ 任意の名前を入力(例:MyTaskBot)
- 「チャンネルを作成」→「Messaging API」を選択
- チャンネル基本設定で「チャンネルアクセストークン(長期)」を発行してコピー
- 「あなたのユーザーID」をメモ(例:Uxxxxxxxxxx形式)
次に、作成したBotを自分のLINEに友だち追加します。チャンネルのQRコードをスキャンして追加してください。
STEP 2:GASプロジェクトの作成
Googleドライブにアクセスし、「新規」→「その他」→「Google Apps Script」でスクリプトエディタを開きます。プロジェクト名を「LINE Task Notifier」などに変更してください。
まず、設定値(トークンとユーザーID)をPropertiesServiceで安全に管理します。スクリプトエディタの「プロジェクトの設定」→「スクリプトプロパティ」に以下を登録します。
- プロパティ名:
LINE_TOKEN値:取得したチャンネルアクセストークン - プロパティ名:
LINE_USER_ID値:自分のユーザーID(U…)
STEP 3:メイン通知スクリプトの実装
以下のコードをそのままコピーして貼り付けてください。
/**
* Googleカレンダー×LINE Bot 今日のタスク通知
*/
function notifyTodaysTasks() {
var props = PropertiesService.getScriptProperties();
var token = props.getProperty('LINE_TOKEN');
var userId = props.getProperty('LINE_USER_ID');
// 今日の開始・終了時刻を取得
var today = new Date();
var startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
var endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59);
// 日付フォーマット用ヘルパー
var fmt = function(d) { return Utilities.formatDate(d, 'Asia/Tokyo', 'HH:mm'); };
var dateStr = Utilities.formatDate(today, 'Asia/Tokyo', 'M月d日(EEE)');
// カレンダーからイベント取得(デフォルトカレンダー)
var cal = CalendarApp.getDefaultCalendar();
var events = cal.getEvents(startOfDay, endOfDay);
var message = '\uD83D\uDCC5 ' + dateStr + ' の予定\n';
message += '─────────────\n';
if (events.length === 0) {
message += '今日の予定はありません。\n';
} else {
events.forEach(function(ev) {
var title = ev.getTitle();
if (ev.isAllDayEvent()) {
message += '◆ [終日] ' + title + '\n';
} else {
var start = fmt(ev.getStartTime());
var end = fmt(ev.getEndTime());
message += '◆ ' + start + '〜' + end + ' ' + title + '\n';
}
});
}
message += '─────────────\n';
message += '良い1日を! \uD83D\uDE80';
// LINE Push Message送信
var payload = {
to: userId,
messages: [{ type: 'text', text: message }]
};
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
method: 'post',
contentType: 'application/json',
headers: { 'Authorization': 'Bearer ' + token },
payload: JSON.stringify(payload)
});
Logger.log('通知送信完了: ' + message);
}
コードを貼り付けたら「Ctrl + S」で保存し、notifyTodaysTasks関数を選択して「▶ 実行」ボタンを押してテスト実行します。初回は「Googleカレンダーへのアクセスを許可」するダイアログが表示されるので「許可」をクリックしてください。
STEP 4:毎朝自動実行するトリガーを設定
手動実行で通知が届いたら、毎朝自動で動くようにトリガーを設定します。
- GASエディタ左メニューの「トリガー(時計アイコン)」をクリック
- 右下の「トリガーを追加」ボタンをクリック
- 実行する関数:
notifyTodaysTasks - イベントのソース:「時間主導型」
- 時間ベースのトリガーのタイプ:「日タイマー」
- 時刻:「午前7時〜8時」など希望の時間帯を選択
- 「保存」をクリック
これで毎朝指定した時間帯にGASが自動実行され、LINEに今日の予定が届くようになります。
動作確認とトラブルシュート
トラブルシュートチェックリスト
- 「Authorization」エラーが出る:LINE_TOKENが正しいか確認。トークンを再発行して再設定してみる
- 「予定はありません」と届くのに予定がある:
CalendarApp.getAllCalendars()で一覧を取得し、対象カレンダーのIDを指定する - 通知が届かない:BotをLINEで友だち追加しているか確認。ユーザーIDが正しいか再確認
- 時刻がずれる:タイムゾーンをAsia/Tokyoに指定しているか確認(GASのプロジェクト設定でも確認)
応用:さらに便利にする拡張アイデア
- 複数カレンダー対応:
CalendarApp.getCalendarById('カレンダーID')で仕事・プライベートを分けて通知 - 明日の予定も通知:夜21時に翌日の予定を送信するトリガーを追加
- リマインダー機能:イベント開始30分前に再通知するスクリプトを追加
- Flex Message対応:LINE Flex Messageを使ってカード形式の見やすいUIに変更
- グループLINE通知:userId部分をグループIDに変えてチーム全員に通知
まとめ
GoogleカレンダーとLINE BotをGASで連携させることで、毎朝のタスク確認作業を完全自動化できます。一度設定してしまえばメンテナンスフリーで動き続ける、費用もかからない強力な仕組みです。
- LINE Messaging APIでチャンネルとトークンを取得
- GASにコードをコピペして認証を通す
- 日次トリガーを設定して毎朝自動通知
- 応用次第でチーム通知やリマインダーにも拡張可能
GASを活用した業務自動化についてご相談がある方は、お気軽にお問い合わせください。貴社の状況に合わせた最適な自動化の仕組みをご提案します。


コメントを残す