「Googleスプレッドシートに予定を入力したら、Googleカレンダーにも自動で反映されると便利だな」と思ったことはありませんか?特に、パソコンやスマホに詳しくない方にとって、手動で予定を入力するのは面倒ですよね。今回は、そんなお悩みを解決するために、初心者でもできる方法をご紹介します。
GoogleスプレッドシートとGoogleカレンダーの連携とは?
Googleスプレッドシートは、予定やタスクを一覧で管理するのに便利なツールです。しかし、スプレッドシートに入力した予定を手動でGoogleカレンダーに登録するのは手間がかかります。そこで、Google Apps Script(GAS)というツールを使うと、スプレッドシートに入力した予定を自動でGoogleカレンダーに反映させることができます。
初心者でもできる!GoogleスプレッドシートとGoogleカレンダーの連携手順
スプレッドシートの準備
まず、Googleスプレッドシートを開き、以下のような項目を入力します
- 予定名(例会議、打ち合わせ)
- 日付(例2025/09/18)
- 開始時刻(例10:00)
- 終了時刻(例11:00)
- 場所(例オンライン、会議室A)
- 詳細(任意)
- ステータス(例未登録、登録済み)
Google Apps Scriptの設定
次に、スプレッドシートとGoogleカレンダーを連携させるためのスクリプトを設定します。
- スプレッドシートを開き、「拡張機能」から「Apps Script」を選択します。
- 表示されたエディタに、以下のスクリプトをコピー&ペーストします
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();
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('追加済');
}
}
}
- スクリプトを保存し、実行します。初回実行時には、Googleアカウントの認証が求められるので、指示に従って許可します。
コメント