複数人が参加する打ち合わせや会議の予定を登録する際に煩わしさを感じたことがある人は多いのではないでしょうか?
この記事では、GoogleスプレッドシートとGoogle Apps Scriptを活用して、複数人のGoogleカレンダーにスケジュールを一括で登録できる便利なツールを紹介します。Google Apps Scriptが設定されているGoogleスプレッドシートテンプレートも無料で配布しているため、ダウンロードしてすぐに使い始められます。
複数人のカレンダーに予定を一括登録するGoogle Apps ScriptコードとGoogleスプレッドシートテンプレートを無料ダウンロード
まずはGoogle Apps ScriptコードとGoogleスプレッドシートテンプレートをダウンロードしましょう。ダウンロードしたテンプレートと照らしあわせながら項目について解説します。
このGoogle Apps Scriptコードでできること
①予定の一括登録
Googleスプレッドシートに入力された情報を自分のGoogleカレンダーに登録します。タイトルや場所、説明文も登録できます。
②ゲストの招待
参加するゲスト(複数のメールアドレス)を指定すると、そのゲストに招待メールが送信されます。ゲストは招待を受け取り、参加を承諾すると自分のカレンダーに予定が追加されます。
③時間帯の調整
開始時間と終了時間を指定して登録します。時間を空欄にすることで、終日イベントの登録もできます。
このGoogle Apps Scriptコードでできないこと
①ゲストのカレンダーに直接登録はできない
予定は自分のカレンダーに登録され、ゲストは招待される形になります。ゲストのカレンダーに直接登録するには、ゲストのカレンダー編集権限が必要です。
②他人のカレンダーの予定の重複を検知できない
自分のカレンダーに登録された予定は重複を検知できますが、ゲストのカレンダーの予定の重複を検知することはできません。
上記を実現するにはAPIを利用する方法があります。ただし、実装の難易度がややあがります。
また、APIを用いても「前に登録されている予定が訪問先だから移動時間を考慮して30分時間をあけて次の予定を登録しよう」といった柔軟な対応はできません。その場合は My Assistant(マイアシスタント) がおすすめです。様々な業務に柔軟に対応でき、業務を自動化できます。
複数人のカレンダーに予定を一括登録する流れ
複数人のカレンダーに予定を一括登録する流れを以下の動画でご覧いただけます。
予定の入力
以下の7つの項目を入力します。
①イベントタイトル(必須)
②日付(例: 2024/11/20、必須)
③開始時間(例: 10:00、空欄可)
④終了時間(例: 11:00、空欄可)
⑤場所(任意)
⑥イベントの説明文(任意)
⑦ゲストのメールアドレス(カンマ区切りで入力)
予定入力時の補足は以下になります。
- 開始時間と終了時間が空欄の場合は終日イベントして予定登録
- 開始時間のみ入力されている場合は自動的に1時間のイベントとして予定登録
- タイトルが空欄の場合はエラー
- 日付の形式が異なっている場合はエラー
カレンダーメニューから実行
実装したGoogle Apps ScriptコードによってGoogleスプレッドシートの上部に「カレンダーメニュー」が追加されています。
クリックすると「カレンダーに登録する」という項目が表示されるのでクリック(実行)します。
登録結果の確認
- 登録成功
- エラー:重複
- エラー:日程を確認してください
- エラー:タイトルなし
などの登録結果が表示されます。登録成功のものは実際に登録が完了(ゲストは招待)されています。
Google Apps Scriptコードの解説
複数人のカレンダーに予定を一括登録するGoogle Apps Scriptコードの一部を紹介します。カスタマイズしたい場合は以下を参考にしてください。
コードをすべてコピーしたい方はダウンロードするとご覧いただけます。
メニューの追加
以下のコードでGoogleスプレッドシートのメニューに追加しています。メニュー名を変更したい場合はこのコードを変更してください。
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('カレンダーメニュー') // メニュー名 .addItem('カレンダーに登録する', 'registerCalendarEvents') // メニュー項目と実行関数 .addToUi(); }
終日イベントの登録
以下のコードで終日イベントの登録をしています。登録結果の文字列を「登録成功:終日イベント」のように変更することもできます。
if (!eventStartTime && !eventEndTime) { try { defaultCalendar.createAllDayEvent(eventTitle, parsedEventDate, { location: eventLocation, description: eventDetails, guests: eventGuests }); sheetData[rowIndex][7] = '登録成功'; } catch (error) { sheetData[rowIndex][7] = 'エラー: 登録失敗'; } continue; }
開始時間・終了時間の登録
以下のコードで、開始時間と終了時間の指定の有無を確認し、指定されていればそれぞれの時間を設定しています。終了時間が空欄の場合は開始時間の1時間後に自動的に設定しています。
if (eventStartTime) startDateTime.setHours(eventStartTime.getHours(), eventStartTime.getMinutes()); if (eventEndTime) { endDateTime.setHours(eventEndTime.getHours(), eventEndTime.getMinutes()); } else { endDateTime = new Date(startDateTime.getTime() + 60 * 60 * 1000); // デフォルト: 開始から1時間後 }
自分のカレンダーに登録済みの予定との重複確認
以下のコードで自分のカレンダーに登録済みの予定と重複していないかの判定を行い、重複している場合には「エラー:重複」を返しています。
const overlappingEvents = defaultCalendar.getEvents(startDateTime, endDateTime); const isConflict = overlappingEvents.some(existingEvent => { const existingStart = existingEvent.getStartTime().getTime(); const existingEnd = existingEvent.getEndTime().getTime(); return startDateTime.getTime() < existingEnd && endDateTime.getTime() > existingStart; // 時間の重複を判定 }); if (isConflict) { sheetData[rowIndex][7] = 'エラー: 重複'; continue; }
今回は「複数人のカレンダーに予定を一括登録するGoogle Apps Scriptコード」を紹介しました。このコードを使えば、スケジュール登録を効率的に行えるでしょう。
更に効率的に日程調整を行いたい場合は My Assistant(マイアシスタント) が便利です。
「前の会議が経営会議だから時間が押す可能性がある。余裕を持ってスケジュールを押さえよう」といった柔軟な対応が可能です。
また「出張のスケジュール設定とビジネスホテルの予約」といった一連の業務も対応可能です。
スケジュール調整以外にも見積書や請求書の作成・送付、売上や支出の記帳、データ入力など様々な業務を月額2.5万円〜で支援します。ぜひご相談ください。
さとゆずSATOYUZU
株式会社キャスターで、採用支援事業「CASTER BIZ 採用」のWebマーケティングと『Alternative Work』の運営を担当しています。私生活ではECサイトの運営など。週3日働き、他の日は好きなことをやっています。3歳の娘に翻弄される日々を送っています。