こんばんは!小売業で採用担当をしているミハタです
現在わたしには悩みがあります…
悩みとは、仕事をより素早く・正確に進めたいけど、どうしたらいいんだ!? ということです。
わたしは採用のお仕事を、一緒に理想を実現する仲間づくりと考えています。
そのため、できる限り多くの魅力のある方と出会い、話を聞きたいと思っています。
出会いは一期一会であり、効率を上げることは結び付きにくいなと感じています。
一般的に、採用の仕事は次の3つのフェーズに分けられます。
1. 採用ターゲットに対し「うちで働きませんか?」とアプローチするフェーズ
2. 面接や合否通知を実施するフェーズ
3. 内定出し後に自社へ入社したい意欲を高めるフェーズ
各フェーズのバックグラウンドには、個別のメール作成・日程調整など細かな事務作業がふんだんにあります。
これらをデジタルツールの力を借りてより素早く・正確に実施する過程を備忘録として残します。
題して「デジタルの力で大転職時代を乗り切ろう」シリーズです★
これまでの記事はこちら
今回紹介するのはこちら↓
Googleカレンダーの予約情報を自動でGoogleスプレッドシートに転記する方法 です!
プログラミング初心者でもわかるように、Google Apps Script (GAS)を使って、Googleカレンダーの予約情報をGoogleスプレッドシートに自動で転記する方法を丁寧に説明します。
警告
予約者がGoogleアカウントを持っていないと
結論、必要な情報すべてを転記することはできませんでした
取り組む目的
Googleカレンダーで面接や会議などの予約を管理していると、「予約の内容を簡単に一覧で確認したい」「手動で管理するのは大変」ということがありますよね。そんなときに、予約情報を自動でGoogleスプレッドシートに転記できるようにすると、とても便利です。
この記事のゴール
- Googleカレンダーの予約情報(日時や予約者情報)を、Googleスプレッドシートに自動で転記できるようになる
- コードの詳しい説明を見ながら、初心者でも理解できる
事前準備
この作業を始める前に、以下の準備が必要です。
- Googleアカウント:作成
- Googleカレンダー:カレンダーの予約枠を使って予約を管理していること
- Googleスプレッドシート:予約情報を記録したいスプレッドシートを用意
もしこれらがまだ用意できていない場合は、まずGoogleカレンダーで予約を管理してみてください。
次に、Googleスプレッドシートを新しく作っておきます。
スプレッドシートの準備
まずは、Googleスプレッドシートを準備しましょう。
このシートに、カレンダーの予約情報が転記されます。
スプレッドシートの作成
Googleスプレッドシートにアクセスして、新しいシートを作成します。
名前を「予約管理」や「予約情報」にするとわかりやすいです。
①列(カラム)を準備
スプレッドシートの1行目に以下のようなヘッダーを追加します。
| 開始日時 | 終了日時 | タイトル | 予約者 姓 | 予約者 名 | 予約者 メールアドレス |
これにより、予約情報がスプレッドシートのどの列に転記されるかを明確にします。
②Google Apps Scriptの設定とコード
次に、Google Apps Scriptを使って、カレンダーの情報をスプレッドシートに転記するコードを作成します。
Google Apps Scriptは、Googleサービス(カレンダーやスプレッドシートなど)を自動化するためのツールです。
③スクリプトを作成する手順
1. Google Apps Scriptを開く
スプレッドシートの上部メニューにある「拡張機能」をクリックし、「Apps Script」を選択します。これでスクリプトエディタが開きます。
2. スクリプトを記述
以下のコードをそのままスクリプトエディタに貼り付けます。
このコードは、Googleカレンダーから予約情報を取得し、Googleスプレッドシートに転記します。
function transferCalendarReservationsToSheet() {
// スプレッドシートのIDとシート名を指定
var sheet = SpreadsheetApp.openById('スプレッドシートID').getSheetByName('シート名');
// カレンダーID(GoogleカレンダーのIDを使用)
var calendarId = 'カレンダーID@group.calendar.google.com';
var calendar = CalendarApp.getCalendarById(calendarId);
// 予約を取得する期間を指定(例: 今日から1ヶ月間)
var startTime = new Date();
var endTime = new Date();
endTime.setMonth(endTime.getMonth() + 1); // 1ヶ月後まで
// イベントを取得(指定した期間の予定をカレンダーから取得)
var events = calendar.getEvents(startTime, endTime);
// スプレッドシートのヘッダーがなければ設定(1行目にヘッダーを追加)
if (sheet.getLastRow() == 0) {
sheet.appendRow(['開始日時', '終了日時', 'タイトル', '予約者 姓', '予約者 名', '予約者 メールアドレス']);
}
// 各イベントの情報をスプレッドシートに転記
for (var i = 0; i < events.length; i++) {
var event = events[i];
var startTime = event.getStartTime();
var endTime = event.getEndTime();
var title = event.getTitle();
var attendees = event.getGuestList(); // 参加者情報を取得
// 予約者の情報(名前とメールアドレス)を取得してスプレッドシートに書き込む
for (var j = 0; j < attendees.length; j++) {
var attendee = attendees[j];
var email = attendee.getEmail();
var fullName = attendee.getName() || '不明'; // 名前がない場合は「不明」と表示
// 名前を「姓」と「名」に分ける(スペースで区切る)
var nameParts = fullName.split(' ');
var lastName = nameParts.length > 0 ? nameParts[0] : ''; // 姓
var firstName = nameParts.length > 1 ? nameParts[1] : ''; // 名
// データをスプレッドシートに追加
var lastRow = sheet.getLastRow() + 1;
sheet.getRange(lastRow, 1, 1, 6).setValues([[startTime, endTime, title, lastName, firstName, email]]);
}
}
}
コードの説明
このコードは、次のように動作します。
1. Googleカレンダーから予約情報を取得: カレンダーIDと期間を指定し、その期間中のイベントをすべて取得します。
2. 予約者情報を取得: イベントごとに参加者(予約者)の氏名とメールアドレスを取得します。
3. スプレッドシートに転記: 取得した情報をスプレッドシートに書き込みます。開始日時、終了日時、タイトル、予約者の姓、名、メールアドレスが自動で転記されます。
実行する手順
1. スクリプトエディタで「保存」をクリックし、スクリプトを保存します。
2. スクリプトエディタの上部にある「実行」ボタンを押して、スクリプトを実行します。
3. 初めて実行すると、Googleカレンダーやスプレッドシートへのアクセス権限を求められるので、「許可」をクリックします。
これで、カレンダーの予約情報がスプレッドシートに転記されるようになります。
今後の課題
この方法を使うと、Googleカレンダーの予約情報を自動でGoogleスプレッドシートに転記できるようになり、予約管理が一層簡単になります。
一方で、予約者がGoogleアカウントを持っていないと、必要な情報すべてを転記することはできませんでした。
そこで今後は「予約者がGoogleアカウントを持っていない場合」に備えて、Google FormsとGoogle Calenderを連携する方法で一覧表を作成する方法を実装しようと思います!
質問や不明点があれば、コメントで教えてください。お読みいただきありがとうございました!
参考記事はこちら