スプレッドシートの予定をGoogleカレンダーにまとめて登録する方法|GASで効率化!

予定やタスクを管理するのに便利なGoogleカレンダー。

ですが、予定が多数ある場合、Googleカレンダーに一つ一つ登録するとなると手間がかかってしまいます。

そんな時はスプレッドシートに予定を入力し、GAS(Google Apps Script)を使って一括でカレンダー登録すると効率的です。

本記事では、スプレッドシートの入力内容を基にGoogleカレンダーにイベントを作成し、リマインダー通知も設定する方法をご紹介します。

多忙なスケジュールを効率よく管理したい方におすすめです。

目次

完成イメージ

スプレッドシート

Googleカレンダー

スプレッドシートに入力した予定をまとめてGoogleカレンダーに登録

今回の例ではスプレッドシートにタスク名、内容、日付、時間、リマインダーの設定を入力し、GAS(Google Apps Script)を使って、複数の予定を一括でカレンダー登録できます。

Googleカレンダーには各タスクが指定の開始時間と終了時間で表示され、リマインダー通知も設定されるため、重要なタスクを見逃す心配がなくなります。

手順

STEP
スプレッドシートを準備

スプレッドシートを開き、以下の項目を入力します。

項目の入力(例)

入力内容
A1カレンダーID
A3タスク名
B3タスク内容
C3開始日
D3終了日
E3開始時刻
F3終了時刻
G3リマインダー時間
H3リマインダー単位
I3ステータス

項目の入力が完了したら、4行目以降にタスクを入力していきます。

H列のリマインダー単位は以下のどれかを入力します。

  • 分前
  • 時間前
  • 日前
STEP
カレンダーIDを入力

B1セルにカレンダーIDを入力します。

通常、カレンダーIDは「xxx@gmail.com」形式や「xxxx@group.calendar.google.com」形式です。

カレンダーIDの調べ方

Googleカレンダーを開き、画面右上の設定をクリックします。

左側メニューの「マイカレンダーの設定」を確認し、使用したいカレンダーをクリックします。

カレンダーの詳細設定ページで、下にスクロールしていくと「カレンダーID」 が表示されます。

STEP
GASエディタを開く
画像に alt 属性が指定されていません。ファイル名: GAS.png

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
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カレンダーの設定から確認できます。
  • calendarcalendarIdを使用して指定の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列目)からタスクの内容を取得し、イベントの詳細として設定されます。
  • startDateendDate:C列(3列目)とD列(4列目)から開始日と終了日を取得し、イベントの期間を設定します。
  • startTimeendTime:E列(5列目)とF列(6列目)から開始時刻と終了時刻を取得し、イベントの時間を指定します。
  • reminderValuereminderUnit: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());
  • startDateTimestartDatestartTimeの時刻を加えた開始日時を作成します。endDateTimeendDateendTimeの時刻を加えた終了日時を作成します。
カレンダーにイベントを作成
const event = calendar.createEvent(taskName, startDateTime, endDateTime, {
  description: taskDetails
});
  • calendar.createEvent:Googleカレンダーにイベントを追加します。
  • taskName:イベントの名前(タスク名)として設定されます。
  • startDateTimeendDateTime:イベントの開始と終了日時を指定します。
  • 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列(ステータス列)に「追加済」と入力し、再実行時に同じタスクが重複登録されることを防ぎます。
STEP
スクリプトを保存

スクリプトを書いたら、名前をつけて保存します。

(例:「カレンダー登録」)

STEP
スクリプトを実行

スクリプトを実行すると、スプレッドシートの入力内容がGoogleカレンダーにまとめて登録されます。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
Googleカレンダーにスケジュールが反映
STEP
スプレッドシートのステータス(I列)が「追加済」に更新

カレンダーにイベントが追加されたことを記録するため、ステータスが「追加済」に更新されます。

まとめ

複数のタスクを管理する場合はスプレッドシートに一括入力し、GASを使ってGoogleカレンダーに反映することで手間と時間をかけずにすみます。

リマインダー設定もできるため、見逃しのないスケジュール管理ができるようになります。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次