見出し画像

GASでGoogleカレンダーの今日の予定をGoogleスプレッドシートに一覧で表示する方法(Google Apps Script)

Googleカレンダーで予定を管理している人は多いと思いますが、これをスプレッドシートへ表示させることができたら便利だなと思うことはかなりありますよね。

今回は、Googleカレンダーの予定をGoogleスプレッドシートに表示させる基本として、「"今日の""自分の"予定」をスプレッドシートに出力させましょう。

今日以外の情報や、共有カレンダーの情報を出力するのは少しだけ変わりますので、今回は割愛します。

実装の目標(=スプレッドシートに出力する情報)

実装の目標

Googleカレンダーは予定に対して様々な情報を持っていますが、今回は上記のように、

  1. 予定の名前(タイトル)

  2. 予定の開始時間

  3. 予定の終了時間

  4. 説明欄・メモ欄の内容

  5. 予定の場所(会議室情報など)

  6. 予定への参加者

を出力していくことを目指していきます。


コードの各部分の解説

① スプレッドシートとシートの設定

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = "今日の予定";
var sheet = spreadsheet.getSheetByName(sheetName);

// シートが存在しない場合、新しく作成
if (!sheet) {
  sheet = spreadsheet.insertSheet(sheetName);
}

// シートの内容をクリア
sheet.clear();

まずはスプレッドシートを読み込みます。
今回はシート名を「今日の予定」として取得します。必要に応じてシート名を変更します。
もし該当するシートが存在しなければ、新しいシートを作成します。

以前のデータなどが残っていると困るので、既存のデータをクリアします。
消えてほしくないデータがある場合には気をつけましょう。

② 見出し行の設定

var headers = [["タイトル", "開始時間", "終了時間", "説明", "場所", "参加者"]];
sheet.getRange(1, 1, 1, 6).setValues(headers);

スプレッドシートの各列が何を表しているかを分かりやすくするため、出力するデータの見出しを設定します。

③ カレンダーから今日の予定を取得

var calendar = CalendarApp.getDefaultCalendar();
var today = new Date();

var events = calendar.getEventsForDay(today);

次に、Googleカレンダーから今日の日付に該当する予定を取得します。getEventsForDayメソッドを使用して、すべての予定を取得します。

④ 予定のデータを取得し、配列に格納

var data = [];
for (var i = 0; i < events.length; i++) {
  var event = events[i];
  var guests = event.getGuestList().map(function(guest) {
    return guest.getEmail();
  }).join(", ");

  data.push([
    event.getTitle(),
    event.getStartTime(),
    event.getEndTime(),
    event.getDescription(),
    event.getLocation(),
    guests
  ]);
}

取得した予定ごとに、タイトル、開始時間、終了時間、説明、場所、参加者の情報を配列に格納します。
参加者はそのメールアドレスを取得し、カンマ区切りの文字列で出力します

⑤ スプレッドシートへのデータ書き込み

if (data.length > 0) {
  // データをシートに書き込む
  sheet.getRange(2, 1, data.length, 6).setValues(data);
} else {
  // 予定がない場合はメッセージを表示
  sheet.getRange(2, 1).setValue("今日の予定はありません。");
}

最後に、取得した予定のデータをスプレッドシートに書き込みます。
予定がある場合はそのデータを、予定がない場合は「今日の予定はありません。」というメッセージをシートに表示します。


コード全体

以上をまとめるとコード全体は以下のようになります。

ここから先は

1,551字

¥ 160

期間限定!PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?