Googleスプレッドシートで管理している予定を、手動でカレンダーに転記する作業に時間を取られていませんか。そんなときはApps ScriptのCalendarAppを使えば、スプレッドシートのデータから自動的にGoogleカレンダーに予定を追加できます。この記事では、CalendarAppの基本的な使い方から、スクリプトの書き方、トリガー設定による自動化までを解説します。読み終えれば、スプレッドシートとカレンダーを連携した効率的な予定管理ができるようになります。
【要点】スプレッドシートのデータをApps Scriptでカレンダー予定に変換する方法
- CalendarApp.createEvent: 指定した日時とタイトルで予定を新規作成します。
- CalendarApp.getCalendarById: 対象カレンダーのIDを指定して、特定のカレンダーに予定を追加します。
- 時間ベーストリガー: 定期的にスクリプトを実行して、スプレッドシートの更新を自動的にカレンダーに反映します。
ADVERTISEMENT
目次
CalendarAppでカレンダー予定を追加する前に知っておきたいこと
Apps ScriptはGoogleのサービスを自動化するためのプラットフォームです。その中のCalendarAppは、Googleカレンダーにアクセスして予定の作成・取得・編集・削除を行うためのクラスです。スプレッドシートのデータを読み込み、その内容を元にカレンダーに予定を追加する処理をスクリプトで記述します。この機能を使うには、Googleアカウントとスプレッドシートへのアクセス権限が必要です。また、初回実行時に権限の承認を求められますので、許可してください。
スプレッドシートからカレンダーに予定を追加する手順
ここでは、スプレッドシートに記載した予定のタイトル、開始日時、終了日時を読み取り、Googleカレンダーに追加するスクリプトを作成します。スプレッドシートの準備からスクリプトの作成、実行までの流れを順を追って説明します。
1. スプレッドシートを準備する
- サンプルデータを作成する
新しいスプレッドシートを作成し、シート名を「予定」に変更します。A列にタイトル、B列に開始日時、C列に終了日時を入力してください。日時は「2025/3/1 10:00」のような形式で入力します。 - 見出し行を追加する
1行目に見出しとして「タイトル」「開始」「終了」と入力します。データは2行目から入力します。
2. スクリプトエディタを開く
- 拡張機能メニューから開く
メニューバーの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
3. スクリプトを記述する
- 関数を定義する
エディタに以下のコードを貼り付けます。関数名は「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);
}
} - コードの説明
getSheetByNameでシートを取得し、getDataRange().getValues()で全データを二次元配列として取得します。for文で2行目から順にタイトル、開始、終了を取得し、createEventで予定を作成します。
4. スクリプトを実行する
- 関数を選択して実行
スクリプトエディタ上部の関数選択ドロップダウンから「addEventsFromSpreadsheet」を選び、▶(実行)ボタンをクリックします。初回は権限の承認ダイアログが表示されるので、内容を確認して「許可」をクリックします。 - 実行結果を確認
正常に実行されると、Googleカレンダーに予定が追加されます。カレンダーを開いて追加された予定を確認してください。
5. トリガーを設定して自動実行する
- トリガーを追加する
スクリプトエディタの左側のメニューから「トリガー」をクリックし、「トリガーを追加」をクリックします。 - 実行条件を設定する
「実行する関数」に「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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
