はじめに
本記事では、GoogleCalendarに登録されているイベントが持つデータをスプレッドシートに書き込む方法を紹介します。
以下の手順で、カレンダー上にある実行日のすべての予定から「タイトル・時間・時間」を取得します。
- GoogleCalendarのIDを取得
- GASスクリプトを作成
- 実行確認
1. GoogleCalendarのIDを取得
GoogleCalendarを表示
GASでカレンダーの情報を取得するためには、そのカレンダーを特定するためのIDが必要になります。
Googleアカウントにログインし、アプリからカレンダーを表示します。
GoogleCalendarIDを表示
次にGoogleCalendarIDを確認する方法です。
右上の歯車アイコンから「設定」を選択し、クリックします(2021/09現在のレイアウト)。
すると、下記の画面が表示されるので左欄の「マイカレンダー設定」にある自身のアカウント名を選択し、クリックします。
プルダウン式に項目が表示されるので「カレンダーの統合」をクリックします。
表示された画面上にあるカレンダーIDがカレンダー情報を取得するためのキーとなります。
2. GASスクリプトを作成
カレンダーIDを取得したら、入力したいスプレッドシートを開き、スクリプトエディタを起動します。
以下のようにメインとなる関数と、オリジナルの日付フォーマットを行うための二つの関数を用います。
コードの内容は以下の通りです。
timeFormater
引数から時間を受け取り、時単位と分単位で分けたあと、一桁の数字には先頭に0をつけて結果を返します
function timeFormater(time) {
let hour = time.getHours();
let minute = time.getMinutes();
//時単位が一桁なら0埋め
if (String(hour).length === 1)
hour = '0'+hour;
//分単位が一桁なら0埋め
if (String(minute).length === 1)
minute = '0'+minute;
return(hour +':'+ minute);
}
getGoogleCalendar
カレンダーから予定を、スプレッドシートからシートを取得し、実行日の予定をスプレッドシート上に書き出しています。
function getGoogleCalendar() {
//GoogleCalendar
const id_calendar = '***********@gmail.com'; // カレンダーのIDを取得
const calendar = CalendarApp.getCalendarById(id_calendar); // IDからカレンダーを取得
//SpreadSheet
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
const sheet = spreadsheet.getActiveSheet(); // 取得したスプレッドシートのアクティブなシートを取得
//予定の取得
const date = new Date(); // 今日の日付を取得。dateに格納
const events = calendar.getEventsForDay(date); // 取得したカレンダーからdateの日付にあるカレンダーの予定を取得
// イベント数分の繰り返し処理
for (let e in events){
let start_time = timeFormater(events[e].getStartTime()); // カレンダーに登録されたイベントの開始時刻を取得
let end_time = timeFormater(events[e].getEndTime()); // カレンダーに登録されたイベントの終了時刻を取得
//タイトル + 時間 + 説明を表示
let context = events[e].getTitle() +' '+ start_time +'-'+ end_time +'\n'+ events[e].getDescription();
console.log(context);
sheet.getRange('A'+(Number(e)+1)).setValue(context);
}
}
3. 実行確認
このように、カレンダー上に設定された予定を取得し、いい感じな形に成形することができました。
さまざまな条件設定や、ボタンを配置することができれば時間にかかる予定表、日報も短時間でつくることができそうです。
参考URL