見出し画像

専属秘書を作ろう! - #07 Googleカレンダーを設定する

前回までで、専属秘書みどりこちゃんがリッチメニューから動作させられる (自動でコマンドが送れる) ようになりました。

今回は、やりたいことの筆頭と思われるスケジュール管理に取り組もうと思います。

特に「今日の予定は何があったっけ?」というのはよくあるのではないでしょうか?

そこで、機能実装第一弾は【スケジュール管理】です。

Googleカレンダーを使ってスケジュール管理をしていきましょう。

⬇️ 過去の note をまだご覧になっていない方はこちら ⬇️



Googleカレンダーを設定する

あなたの Googleカレンダーはどうなっていますか?

ちなみに私のカレンダーはこんな感じです💦

自分の予定、チームメンバーの予定、グループの予定、家族の予定、など様々な予定がいっぱい入っています😅

一覧で見る時は、こんな感じで見れると都合が良い時もあるのですが、自分の予定を知りたい時には左側のメニューからチェックボックスを OFF にして~とかしないといけないので手間ですね…。

まずは、どのカレンダーの情報を知りたいか設定できるようにしましょう。

メニューを追加

まずは、Googleカレンダーを取得するためのメニューを追加しましょう。

const menu = ui.createMenu("BBP");
menu.addSubMenu(
  ui.createMenu("リッチメニュー")
    .addItem("ID抽出&画像読込","readImage")
    .addItem("内容検証&LINEにセット","setRichmenu")
);
menu.addSubMenu(
  ui.createMenu("カレンダー")
    .addItem("全カレンダー取得","getCalendars")
);
menu.addToUi();

もともとあった「リッチメニュー」の下に、「カレンダー」メニューを追加しました。

また、さらにサブメニューとして「全カレンダー取得」メニューを追加しました。

スプレッドシートを再読込すると、以下のようにメニューに追加されます。

全カレンダーを取得する

「全カレンダー取得」をクリックした際に getCalendars() が呼ばれますので、関数を作成します。

function getCalendars() 
{
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(TAB_NAME[TABINDEX_CALENDAR]);
  let range = sheet.getRange(2,1,sheet.getLastRow(),sheet.getLastColumn());

  range.clear();
  range.removeCheckboxes();

  const list = CalendarApp.getAllCalendars();

  for( let calendar of list )
  {
    let data = ["",calendar.getName(),calendar.getId()];
    sheet.appendRow(data);
  }

  range = sheet.getRange(2,1,sheet.getLastRow()-1,1);
  range.insertCheckboxes();
}

CalendarApp.getAllCalendars() 関数を使用すると、自分が登録しているカレンダーをすべて取得してくれますので、当関数で取得したカレンダー情報をスプレッドシートに記載しています。

また、どのカレンダーの情報を LINE に通知するかを判別するために、A列にチェックボックスを追加しています。

⬇️ クラスの詳細はこちら ⬇️

上図は、サンプルで以下のカレンダーを追加したものです。

▼自身で追加
 ・グループ共有用
▼他者のカレンダーを追加
 ・日本代表全試合
 ・六曜

このアカウントのカレンダー情報を取得すると、以下のようになります。

通知カレンダーの設定

取得しただけでは、すべてのカレンダーにチェックがついていない状態です。

このチェックボックスにチェックが入っていればカレンダーのチェックを行うようにしたいと思いますので、スケジュール管理したいカレンダーにチェックしてください。

ここでは、"Mr.Green (Googleアカウントに紐づく基本カレンダー)" と自身で追加した "グループ共有用" の 2つのカレンダーをスケジュール管理対象としましょう。

このようにチェック

これで通知したいカレンダー設定ができました。

まとめ

今回は、登録されている Googleカレンダーの中から通知するカレンダーを選択する方法についてお話しました。

Googleカレンダーは非常に便利で、サンプルで追加したようなサッカーや野球などの試合情報などを提供してくださっている方もいらっしゃいます。

これらをすべて通知していては、スケジュール管理どころでは無いですからね💦

これで必要なカレンダー情報のみ取得してくれますので、使いやすくなりました。

次回も楽しみですね✨

もしわからないことがありましたら、お気軽に LINE公式アカウント でご質問ください。

何でも答えるよ~

今回のご提供ファイルのキーワードは【専属秘書みどりこV4】です。

LINE公式アカウントにご登録の上、キーワードを送信してくださいね。

⬇️LINE公式アカウントに登録してご連絡ください⬇️

ビジネスが加速するよ~

もし「サポートしたい!」という方がいらっしゃいましたら、ぜひぜひサポートをお願いいたします! 開発費や外注費などクリエイター活動の一部として使用させて頂きます✨