ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptでカレンダー予定追加!CalendarAppの活用

【Googleスプレッドシート】Apps Scriptでカレンダー予定追加!CalendarAppの活用
🛡️ 超解決

Googleスプレッドシートで管理している予定を、手動でカレンダーに転記する作業に時間を取られていませんか。そんなときはApps ScriptのCalendarAppを使えば、スプレッドシートのデータから自動的にGoogleカレンダーに予定を追加できます。この記事では、CalendarAppの基本的な使い方から、スクリプトの書き方、トリガー設定による自動化までを解説します。読み終えれば、スプレッドシートとカレンダーを連携した効率的な予定管理ができるようになります。

【要点】スプレッドシートのデータをApps Scriptでカレンダー予定に変換する方法

  • CalendarApp.createEvent: 指定した日時とタイトルで予定を新規作成します。
  • CalendarApp.getCalendarById: 対象カレンダーのIDを指定して、特定のカレンダーに予定を追加します。
  • 時間ベーストリガー: 定期的にスクリプトを実行して、スプレッドシートの更新を自動的にカレンダーに反映します。

ADVERTISEMENT

CalendarAppでカレンダー予定を追加する前に知っておきたいこと

Apps ScriptはGoogleのサービスを自動化するためのプラットフォームです。その中のCalendarAppは、Googleカレンダーにアクセスして予定の作成・取得・編集・削除を行うためのクラスです。スプレッドシートのデータを読み込み、その内容を元にカレンダーに予定を追加する処理をスクリプトで記述します。この機能を使うには、Googleアカウントとスプレッドシートへのアクセス権限が必要です。また、初回実行時に権限の承認を求められますので、許可してください。

スプレッドシートからカレンダーに予定を追加する手順

ここでは、スプレッドシートに記載した予定のタイトル、開始日時、終了日時を読み取り、Googleカレンダーに追加するスクリプトを作成します。スプレッドシートの準備からスクリプトの作成、実行までの流れを順を追って説明します。

1. スプレッドシートを準備する

  1. サンプルデータを作成する
    新しいスプレッドシートを作成し、シート名を「予定」に変更します。A列にタイトル、B列に開始日時、C列に終了日時を入力してください。日時は「2025/3/1 10:00」のような形式で入力します。
  2. 見出し行を追加する
    1行目に見出しとして「タイトル」「開始」「終了」と入力します。データは2行目から入力します。

2. スクリプトエディタを開く

  1. 拡張機能メニューから開く
    メニューバーの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。

3. スクリプトを記述する

  1. 関数を定義する
    エディタに以下のコードを貼り付けます。関数名は「addEventsFromSpreadsheet」とします。
    function addEventsFromSpreadsheet() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('予定');
    var data = sheet.getDataRange().getValues();
    var calendar = CalendarApp.getDefaultCalendar();
    // 見出し行をスキップ
    for (var i = 1; i < data.length; i++) {
    var title = data[i][0];
    var start = new Date(data[i][1]);
    var end = new Date(data[i][2]);
    // 既に同じ予定が存在するかチェック(省略)
    calendar.createEvent(title, start, end);
    }
    }
  2. コードの説明
    getSheetByNameでシートを取得し、getDataRange().getValues()で全データを二次元配列として取得します。for文で2行目から順にタイトル、開始、終了を取得し、createEventで予定を作成します。

4. スクリプトを実行する

  1. 関数を選択して実行
    スクリプトエディタ上部の関数選択ドロップダウンから「addEventsFromSpreadsheet」を選び、▶(実行)ボタンをクリックします。初回は権限の承認ダイアログが表示されるので、内容を確認して「許可」をクリックします。
  2. 実行結果を確認
    正常に実行されると、Googleカレンダーに予定が追加されます。カレンダーを開いて追加された予定を確認してください。

5. トリガーを設定して自動実行する

  1. トリガーを追加する
    スクリプトエディタの左側のメニューから「トリガー」をクリックし、「トリガーを追加」をクリックします。
  2. 実行条件を設定する
    「実行する関数」に「addEventsFromSpreadsheet」を選択します。「イベントのソース」を「時間主導型」にし、「時間の間隔」を「1時間おき」などに設定します。好みの間隔を選び、「保存」をクリックします。

CalendarAppを使う際の注意点とよくあるトラブル

タイムゾーンが正しく反映されない

スプレッドシートに入力した日時が、カレンダーで別の時刻になってしまうことがあります。これはタイムゾーンの違いが原因です。スプレッドシートのデフォルトタイムゾーンとカレンダーのタイムゾーンを一致させる必要があります。スプレッドシートのメニュー「ファイル」→「設定」→「計算設定」でタイムゾーンを確認し、カレンダーの設定と合わせてください。

予定が重複して作成される

スクリプトを複数回実行すると、同じ予定が重複して追加されることがあります。これを防ぐには、事前に既存の予定を確認してから追加するロジックを組み込みます。例えば、タイトルと日時で既存のイベントを検索する方法があります。

権限エラーが発生する

スクリプト実行時に「権限がありません」というエラーが出る場合は、再度承認が必要です。スクリプトエディタで「実行」をクリックし、表示されるダイアログで適切な権限を許可してください。また、Googleアカウントでカレンダーへのアクセスが制限されている可能性もあるので、アカウント設定を確認しましょう。

ADVERTISEMENT

応用例:特定のカレンダーに追加する方法

デフォルトカレンダーではなく、特定の共有カレンダーに予定を追加したい場合は、CalendarApp.getCalendarById()を使用します。カレンダーIDはGoogleカレンダーの設定画面から取得できます。以下のようにコードを変更します。

var calendarId = 'your_calendar_id@group.calendar.google.com';
var calendar = CalendarApp.getCalendarById(calendarId);

カレンダーIDは、カレンダーの設定画面で「カレンダーの統合」セクションにある「カレンダーID」の値をコピーします。これを指定することで、任意のカレンダーに予定を追加できます。

スプレッドシートとカレンダーの連携を自動化しよう

この記事では、Apps ScriptのCalendarAppを使ってスプレッドシートのデータをGoogleカレンダーに追加する方法を解説しました。基本的なcreateEventの使い方から、特定カレンダーの指定、トリガーによる自動実行までをカバーしています。この仕組みを応用すれば、イベントの詳細情報やリマインダー設定などもスクリプトで制御できます。ぜひご自身のスプレッドシートに合わせてカスタマイズし、予定管理の効率を高めてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。