はじめに
Google カレンダーでイベントを一括登録する方法を 2 つ紹介します。
- CSV をカレンダーにインポートする方法
- Google Apps Script を用いてスプレッドシートから登録する方法
1 と 2 の方法によって、登録できる情報が異なります。 1 の方法で済むなら、 1 でやった方が手続きが楽だと思います。参加者を登録する必要があれば、 2 の方法を選択する必要があります。
以下に詳細な手順を記載します。
1. CSV をカレンダーにインポートする方法
公式ヘルプ を参考に、 CSV ファイルを作成。
- Subject
- 予定の名前(必須)
- Start Date
- 予定の開始日(必須)
- Start Time
- 予定の開始時刻
- End Date
- 予定の終了日
- End Time
- 予定の終了時刻
- All Day Event
- 終日の予定であるかどうかを指定します。終日の予定の場合は「True」、そうでない場合は「False」と入力します
- Description
- 予定の説明やメモ
- Location
- 予定の場所
- Private
- 予定を限定公開にするかどうかを指定します。限定公開の場合は「True」、限定公開でない場合は「False」と入力します
2. Google Apps Script を用いてスプレッドシートから登録する方法
以下のサンプルのスプレッドシートをもとに、イベント一覧を作成。コピーを自分のアカウントにコピーしてきていじってください。
https://docs.google.com/spreadsheets/d/1yoiwKPBs-FwGYq-zZkQza2B7VYpvvqcM0tCLDSyFiR8/edit#gid=0
以下全文。
// 設定
function getConfig() {
return {
spreadSheetId: '',// スプレッドシートの ID を入力。
spreadSheetTabName: ''// スプレッドシートのタブ名を入力。
}
}
// カレンダーにイベントを登録
function registerAll() {
var config = getConfig();
var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId);
var sheet = spreadSheet.getSheetByName(config.spreadSheetTabName);
var eventIds = sheet
.getDataRange()
.getValues()
.filter(function (e, i) {
return i !== 0 && e[6] === '';
}).map(function (e) {
var calendarEvent = CalendarApp.getDefaultCalendar().createEvent(
e[0], e[1], e[2],
{
description: e[3],
location: e[4],
guests: e[5]
});
return [calendarEvent.getId()];
});
if (eventIds.length === 0) return;
sheet.getRange('G2:G' + (eventIds.length+1) ).setValues(eventIds);
}
// 登録されたイベントをキャンセルして、シートから削除
function cancelAll() {
var range = 'G2:G1000';
var config = getConfig();
var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId);
var sheet = spreadSheet.getSheetByName(config.spreadSheetTabName);
sheet
.getRange(range)
.getValues()
.filter(function (eventId) {
return eventId[0] !== '';
}).forEach(function (id) {
CalendarApp.getDefaultCalendar().getEventById(id).deleteEvent();
});
sheet.getRange(range).clear();
}
spreadSheetId にスプレッドシートの ID を入力。
spreadSheetTabName にスプレッドシートのタブ名を入力。
GAS だと 50 行くらいでサクッとできて良いですね。以上。