スプレッドシートの予定をGoogleカレンダーにまとめて登録する方法|GASで効率化!
予定やタスクを管理するのに便利なGoogleカレンダー。
ですが、予定が多数ある場合、Googleカレンダーに一つ一つ登録するとなると手間がかかってしまいます。
そんな時はスプレッドシートに予定を入力し、GAS(Google Apps Script)を使って一括でカレンダー登録すると効率的です。
本記事では、スプレッドシートの入力内容を基にGoogleカレンダーにイベントを作成し、リマインダー通知も設定する方法をご紹介します。
多忙なスケジュールを効率よく管理したい方におすすめです。
完成イメージ
スプレッドシート
Googleカレンダー
スプレッドシートに入力した予定をまとめてGoogleカレンダーに登録
今回の例ではスプレッドシートにタスク名、内容、日付、時間、リマインダーの設定を入力し、GAS(Google Apps Script)を使って、複数の予定を一括でカレンダー登録できます。
Googleカレンダーには各タスクが指定の開始時間と終了時間で表示され、リマインダー通知も設定されるため、重要なタスクを見逃す心配がなくなります。
手順
スプレッドシートを開き、以下の項目を入力します。
項目の入力(例)
入力内容 | |
---|---|
A1 | カレンダーID |
A3 | タスク名 |
B3 | タスク内容 |
C3 | 開始日 |
D3 | 終了日 |
E3 | 開始時刻 |
F3 | 終了時刻 |
G3 | リマインダー時間 |
H3 | リマインダー単位 |
I3 | ステータス |
項目の入力が完了したら、4行目以降にタスクを入力していきます。
H列のリマインダー単位は以下のどれかを入力します。
- 分前
- 時間前
- 日前
B1セルにカレンダーIDを入力します。
通常、カレンダーIDは「xxx@gmail.com」形式や「xxxx@group.calendar.google.com」形式です。
カレンダーIDの調べ方
Googleカレンダーを開き、画面右上の設定をクリックします。
左側メニューの「マイカレンダーの設定」を確認し、使用したいカレンダーをクリックします。
カレンダーの詳細設定ページで、下にスクロールしていくと「カレンダーID」 が表示されます。
Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。
function myFunction(){
}
が最初から入っているため、消去して以下のスクリプトを貼り付けます。
function addTasksToCalendar() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const calendarId = sheet.getRange("B1").getValue(); // B1セルからカレンダーIDを取得
const calendar = CalendarApp.getCalendarById(calendarId);
if (!calendar) {
Logger.log("Error: カレンダーが見つかりません。カレンダーIDが正しいか、アクセス権限があるか確認してください。");
return;
}
const lastRow = sheet.getLastRow();
// データが4行目から始まるように調整
for (let i = 4; i <= lastRow; i++) {
const taskName = sheet.getRange(i, 1).getValue(); // タスク名
const taskDetails = sheet.getRange(i, 2).getValue(); // タスク内容
const startDate = sheet.getRange(i, 3).getValue(); // 開始日
const endDate = sheet.getRange(i, 4).getValue(); // 終了日
const startTime = sheet.getRange(i, 5).getValue(); // 開始時刻
const endTime = sheet.getRange(i, 6).getValue(); // 終了時刻
const reminderValue = sheet.getRange(i, 7).getValue(); // リマインダー時間(数字のみ)
const reminderUnit = sheet.getRange(i, 8).getValue(); // リマインダー単位(分前、時間前、日前)
const status = sheet.getRange(i, 9).getValue(); // ステータス
if (status !== '追加済') {
const startDateTime = new Date(startDate);
startDateTime.setHours(startTime.getHours(), startTime.getMinutes());
const endDateTime = new Date(endDate);
endDateTime.setHours(endTime.getHours(), endTime.getMinutes());
const event = calendar.createEvent(taskName, startDateTime, endDateTime, {
description: taskDetails
});
// リマインダー設定
let reminderMinutes = null;
if (!isNaN(reminderValue) && reminderUnit) {
if (reminderUnit === '分前') {
reminderMinutes = parseInt(reminderValue);
} else if (reminderUnit === '時間前') {
reminderMinutes = parseInt(reminderValue) * 60;
} else if (reminderUnit === '日前') {
reminderMinutes = parseInt(reminderValue) * 60 * 24;
}
}
// リマインダーを設定
if (reminderMinutes !== null) {
event.addPopupReminder(reminderMinutes);
}
// ステータスを「追加済」に更新
sheet.getRange(i, 9).setValue('追加済');
}
}
}
スクリプトの説明
- スプレッドシートとカレンダーの設定
-
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const calendarId = sheet.getRange("B1").getValue(); // B1セルからカレンダーIDを取得 const calendar = CalendarApp.getCalendarById(calendarId);
sheet
:現在アクティブなスプレッドシートのシートを取得します。calendarId
:スプレッドシートのB1
セルからカレンダーIDを取得します。カレンダーIDはGoogleカレンダーの設定から確認できます。calendar
:calendarId
を使用して指定のGoogleカレンダーを参照します。カレンダーが見つからない場合は、スクリプトの実行が停止されます。
- 最終行を取得し、ループでタスク情報を読み込む
-
const lastRow = sheet.getLastRow(); for (let i = 4; i <= lastRow; i++) { // タスク情報を各列から取得 }
lastRow
:スプレッドシートの最終行を取得します。これにより、データがある範囲内を繰り返し処理できます。for
ループ:4行目から最終行までを繰り返し処理します。各行でタスクのデータを取得し、カレンダーに登録します。
- タスク情報の取得
-
const taskName = sheet.getRange(i, 1).getValue(); const taskDetails = sheet.getRange(i, 2).getValue(); const startDate = sheet.getRange(i, 3).getValue(); const endDate = sheet.getRange(i, 4).getValue(); const startTime = sheet.getRange(i, 5).getValue(); const endTime = sheet.getRange(i, 6).getValue(); const reminderValue = sheet.getRange(i, 7).getValue(); const reminderUnit = sheet.getRange(i, 8).getValue(); const status = sheet.getRange(i, 9).getValue();
taskName
:A列(1列目)からタスク名を取得します。これがGoogleカレンダーのイベント名として表示されます。taskDetails
:B列(2列目)からタスクの内容を取得し、イベントの詳細として設定されます。startDate
とendDate
:C列(3列目)とD列(4列目)から開始日と終了日を取得し、イベントの期間を設定します。startTime
とendTime
:E列(5列目)とF列(6列目)から開始時刻と終了時刻を取得し、イベントの時間を指定します。reminderValue
とreminderUnit
:G列(7列目)とH列(8列目)からリマインダーの設定を取得し、通知のタイミングを指定します。status
:I列(9列目)からステータスを取得し、まだ追加されていないタスクのみを処理対象とします。
- 開始日時と終了日時を設定
-
const startDateTime = new Date(startDate); startDateTime.setHours(startTime.getHours(), startTime.getMinutes()); const endDateTime = new Date(endDate); endDateTime.setHours(endTime.getHours(), endTime.getMinutes());
startDateTime
:startDate
にstartTime
の時刻を加えた開始日時を作成します。endDateTime
:endDate
にendTime
の時刻を加えた終了日時を作成します。
- カレンダーにイベントを作成
-
const event = calendar.createEvent(taskName, startDateTime, endDateTime, { description: taskDetails });
calendar.createEvent
:Googleカレンダーにイベントを追加します。taskName
:イベントの名前(タスク名)として設定されます。startDateTime
とendDateTime
:イベントの開始と終了日時を指定します。description
:イベントの詳細情報として、タスクの内容が設定されます。
- リマインダー設定
-
let reminderMinutes = null; if (!isNaN(reminderValue) && reminderUnit) { if (reminderUnit === '分前') { reminderMinutes = parseInt(reminderValue); } else if (reminderUnit === '時間前') { reminderMinutes = parseInt(reminderValue) * 60; } else if (reminderUnit === '日前') { reminderMinutes = parseInt(reminderValue) * 60 * 24; } } if (reminderMinutes !== null) { event.addPopupReminder(reminderMinutes); }
reminderMinutes
:リマインダーのタイミングを分単位で計算し、通知のタイミングを設定します。分前
の場合:入力された値をそのまま使用します。時間前
の場合:時間を分に変換するために60倍します。日前
の場合:日を分に変換するために1440倍(60分×24時間)します。event.addPopupReminder
:計算されたリマインダー時間を使って、イベントのポップアップ通知を設定します。
- ステータスを「追加済」に更新
-
sheet.getRange(i, 9).setValue('追加済');
- I列(ステータス列)に「追加済」と入力し、再実行時に同じタスクが重複登録されることを防ぎます。
スクリプトを書いたら、名前をつけて保存します。
(例:「カレンダー登録」)
スクリプトを実行すると、スプレッドシートの入力内容がGoogleカレンダーにまとめて登録されます。
初めてそのスクリプトを実行する場合は権限の確認が必要です。
そのため、『権限を確認』を押します。
許可の詳細手順
「詳細」をクリックします。
「無題のプロジェクト(安全ではないページ)に移動」をクリックします。
「許可」をクリックします。
カレンダーにイベントが追加されたことを記録するため、ステータスが「追加済」に更新されます。
まとめ
複数のタスクを管理する場合はスプレッドシートに一括入力し、GASを使ってGoogleカレンダーに反映することで手間と時間をかけずにすみます。
リマインダー設定もできるため、見逃しのないスケジュール管理ができるようになります。
弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント