2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Googleカレンダーの予約スケジュールから一覧表を作成しよう(前編)★デジタルの力で大転職時代を乗り切ろう③

Posted at

 こんばんは!小売業で採用担当をしているミハタです
現在わたしには悩みがあります…
悩みとは、仕事をより素早く・正確に進めたいけど、どうしたらいいんだ!? ということです。

 わたしは採用のお仕事を、一緒に理想を実現する仲間づくりと考えています。
そのため、できる限り多くの魅力のある方と出会い、話を聞きたいと思っています。
出会いは一期一会であり、効率を上げることは結び付きにくいなと感じています。

 一般的に、採用の仕事は次の3つのフェーズに分けられます。

 1. 採用ターゲットに対し「うちで働きませんか?」とアプローチするフェーズ
 2. 面接や合否通知を実施するフェーズ
 3. 内定出し後に自社へ入社したい意欲を高めるフェーズ

image.png

 各フェーズのバックグラウンドには、個別のメール作成・日程調整など細かな事務作業がふんだんにあります。
これらをデジタルツールの力を借りてより素早く・正確に実施する過程を備忘録として残します。
題して「デジタルの力で大転職時代を乗り切ろう」シリーズです★

これまでの記事はこちら

 今回紹介するのはこちら↓
 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スプレッドシートに転記します。

qiita.rb
function transferCalendarReservationsToSheet() {
  // スプレッドシートのIDとシート名を指定
  var sheet = SpreadsheetApp.openById('スプレッドシートID').getSheetByName('シート名');
  
  // カレンダーIDGoogleカレンダーの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を連携する方法で一覧表を作成する方法を実装しようと思います!

質問や不明点があれば、コメントで教えてください。お読みいただきありがとうございました!

参考記事はこちら

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?