Google スプレッドシートから Google カレンダー に予定を出力

コピペでGAS

Google カレンダー で学校の予定を管理されていますか!?
せっかく、GoogleWorkspace を使ってるなら、使わないと損!

でも、予定をいちいち入れていくのは大変で…。

と、感じている方も多いのではないかと思います。
実際、学校は毎日本当にたくさんの予定に追われています。

それを全部入れる方法が….!?

ということで、こちらのツールになります。

Google スプレッドシート で予定を入力し、Google カレンダー に反映させるというものです!

[1] Google スプレッドシート の準備

こちらからプログラム入りのスプレッドシートのコピーを作成してください。

コピーの際は、このツールを使いたいアカウントで作成してください!
(Google カレンダー への反映をさせるためです)

作成されたスプレッドシートはこんな感じ。

また、月ごとのシートが用意されてます。

[2] 使い方

  • 件名:カレンダーに表示させるタイトル
  • 開始時間:予定が始まる時間(半角で入力!)
  • 終了時間:予定が終わる時間(半角で入力!)

となっています。

同じ日に、同時に8件まで登録できるようになっています!

[3] 実行

黄色の出力のボタンをクリックしてください。

初めて実行しますので、このプログラムの権限を承認していく必要があります。

不安な方は↓を参考にしてください。

一度、許可をした後に、もう一度、黄色の出力ボタンをクリックしてください!
このような表示が出てきます。

Google カレンダー を確認しましょう!

今回は、12/23 に3件の予定が入っていますね!

そして、この時のカレンダーは、デフォルトとしてご自身のカレンダーに表示されています。

ご自身のカレンダーってどう言うことかというと。

マイカレンダーにご自身のアカウント名が出ているものがあります。
今回は、このマイカレンダーに登録されていることになります。

他にも、カレンダーをトピックのように分けることができるんです。

この辺りの解説は、記事末尾の[12] をご覧ください!!

[4] 応用

今回のプログラムを、少し変えると、スプレッドシートから任意のマイカレンダーに出力することができるようになります。
(マイカレンダーとは、編集権限があるカレンダーのことです。)

[4-1] マイカレンダー作成デモ

今回は、デモ用に新しくマイカレンダーを作ってみます。

Google カレンダー を開くと、左下に「他のカレンダー」というものがあります。

+をクリックします。

名前や説明を入れて、青色のカレンダーを作成をクリックしましょう。

左側にあるマイカレンダーに新しいカレンダーが作成されました!

このテスト用カレンダーとして出力してみたいと思います。

[5] カレンダーID の取得

マイカレンダーで任意の「カレンダーのID」を取得します。

今回は、テスト用カレンダーを取得してみたいと思います。

カレンダーにマウスのカーソルを当てると、3点リーダー( ⋮ )が出てきます。
これをクリックします。

「設定と共有」をクリックします。
(ここで色も変えられるの知っていました!?🤣)

「カレンダーの統合」をクリックします。

そうすると、各種情報が出てくるのですが、ここに「カレンダーID」があります。

このカレンダーIDをコピーしてください。

[6] プログラムの変更

それでは、プログラムの中身を編集していきましょう!

メニューバー「拡張機能」「Apps Script」をクリックしてください。

一番下が31行になっていますが、1行改行します。

こんな感じ。

そして、下記のプログラムを貼り付けましょう!

/**
 * Lists the calendars shown in the user's calendar list.
 * @see https://developers.google.com/calendar/api/v3/reference/calendarList/list
 */
function listCalendars() {
  let calendars;
  let pageToken;
  do {
    calendars = Calendar.CalendarList.list({
      maxResults: 100,
      pageToken: pageToken

    });
    if (!calendars.items || calendars.items.length === 0) {
      Logger.log('カレンダーがありません。');
      return;
    }
    // Print the calendar id and calendar summary
    for (const calendar of calendars.items) {
      Logger.log('%s (ID: %s)', calendar.summary, calendar.id);
    }
    pageToken = calendars.nextPageToken;
  } while (pageToken);
}

貼り付け後は、↓のような感じなります。

そして、すでに組み込まれていた、15行目のプログラムを変更します。

上記の部分を、

let Calendar = CalendarApp.getCalendarById('ここにカレンダーIDを入れます');

に書き換えます。
↓のようになりますね!

次に、先ほど確認をしたカレンダーIDを ‘ ‘ の中に入れてください!

これを忘れずに!

プログラムを編集したので、💾(保存)をしましょう。

[7] テスト

それでは、もう一度、黄色の出力ボタンをクリックしてみましょう!

今回は、指定したカレンダーとして出力されていることが確認できると思います。

使い方としては、年度はじめに、生徒と共有する予定のカレンダーのIDを取得して利用すると、
一括して予定を入れたカレンダーを生徒とすぐに共有できますね!!

[8] Google カレンダー から Google スプレッドシート への書き出し

さらにおまけとして、Google カレンダー の予定を Google スプレッドシート に書き出す機能を追加してみましょう!

[9] 準備

最初に、スプレッドシートにシートを1枚追加します。

スプレッドシートの左下にある+をクリックしましょう。

新しく作ったシートを開いた状態にしておいてください。

ここにこれから Google カレンダー から取得したデータを出力していきます。

次に、もう一度、メニューバーの「拡張機能」から「Apps Script」をクリックして、プログラムの編集を行なっていきます。

また一番下を改行して増やして、以下のコードを貼り付けてみましょう。

function getCalendarEvents() {
var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
const CALENDAR_ID = 'ここにカレンダーIDを入れます'; //カレンダーIDを取得
//ヘッダを入力
mySheet.getRange("A1").setValue("イベント名");
mySheet.getRange("B1").setValue("開始時間");
mySheet.getRange("C1").setValue("終了時間");
mySheet.getRange("D1").setValue("イベント登録者名");
const calendar = CalendarApp.getCalendarById(CALENDAR_ID);
const startTime = new Date('2022/04/01 00:00:00'); //スプレッドシートに書き込みたい期間のはじめの日付を変更して記述
const endTime = new Date('2022/12/01 00:00:00');//スプレッドシートに書き込みたい期間の終わりの日付を変更して記述
const events = calendar.getEvents(startTime, endTime);
const values = [];
for(const event of events){
const record = [
event.getTitle(),
//event.getStartTime(),
Utilities.formatDate(event.getStartTime(),"GMT+0900","yyyy年MM月dd日 HH時mm分") ,//文字列に変換
//event.getEndTime(),
Utilities.formatDate(event.getEndTime(),"GMT+0900","yyyy年MM月dd日 HH時mm分"),//文字列に変換
event.getCreators()[0]
];
values.push(record);
}
SpreadsheetApp.getActiveSheet().getRange(2, 1, values.length, values[0].length).setValues(values);
}

そして、スプレッドシートに書き出したいカレンダーIDを取得し、‘ ‘ の間に入れてください!

const CALENDAR_ID = 'ここにカレンダーIDを入れます'; //カレンダーIDを取得

また、カレンダーを出力すると言っても、10年分とか撮られても困りますよね…。

取得する期間を設定することができます。

以下の部分は適当に書き出したい期間を変更します。
半角で入力することに注意してください。

const startTime = new Date('2022/04/01 00:00:00'); //スプレッドシートに書き込みたい期間のはじめの日付を変更して記述
const endTime = new Date('2022/12/01 00:00:00');//スプレッドシートに書き込みたい期間の終わりの日付を変更して記述

それでは、💾(保存)をクリックしましょう。

[10] 実行

実行する名前を getCalendarEvents に変更して▶️(実行)をクリックしましょう。

↓のような感じに出力されます。

[11] 最後に

この記事を書いているのが、2022年の年末なんですが、そろそろ来年度の行事予定が決まってきましたよね??

ということで、2023年版のスプレッドシートはこちら!!

ぜひ、ご活用ください!

この記事のプログラムは、こちらの記事と同じ内容になっていますが、どちらも Google for Education 認定 トレーナー 鈴木江里 のトレーニング資料になります。

実は、↓のように、A1 のセルの値を2023に変えるだけなんですけどね!🤣

[12] さらにおまけ

Google カレンダー の使い方をまとめた資料になります!

ぜひご活用ください!

カレンダー講座資料ダウンロード (814 ダウンロード)

#カレンダー #スプレッドシート

コメント

タイトルとURLをコピーしました