GoogleフォームとカレンダーをGASで自動連携するためのステップバイステップガイド
Googleフォームで自動的にGoogleカレンダーに予定を追加したいんだけど、GASを使うとどんなことができるんだろう…?

猫男

catman
それなら、catmanが「GASでGoogleフォームとカレンダーを連携」する方法を教えてやろう!
GASでGoogleフォームとカレンダーを自動連携する基本
Googleフォームで受け取った情報をGoogleカレンダーに転送するためには、GASを用いて自動化することができる。まずは基本的なコードを理解しよう。
Googleフォームのトリガーを設定する
フォームが送信されたときに自動でスクリプトが動くよう、トリガーを設定する必要がある。
function onFormSubmit(e) {
const response = e.response;
Logger.log(response.getItemResponses());
}
この関数は、フォーム送信時に呼び出される。response.getItemResponses()でフォームの回答を取得可能だ。
Googleカレンダーに予定を追加する
取得したフォームの情報をもとにカレンダーに予定を追加しよう。
function onFormSubmit(e) {
const response = e.response;
const calendar = CalendarApp.getDefaultCalendar();
const title = response.getItemResponses()[0].getResponse(); // 例:イベント名
const startTime = new Date(response.getItemResponses()[1].getResponse()); // 例:開始時間
const endTime = new Date(response.getItemResponses()[2].getResponse()); // 例:終了時間
calendar.createEvent(title, startTime, endTime);
}
CalendarApp.getDefaultCalendar()でデフォルトのカレンダーを取得し、createEvent()を使って新しいイベントを作成する。
わー、フォームからカレンダーに直接予定が入るのはすごく便利そう!トリガーという仕組みがミソなんだね。

猫男
練習問題
次のシナリオを考えて、フォームからカレンダーへの連携を実装してください。
1. フォームにイベント名、開始日時、終了日時、場所を入力するフィールドを作成する。
2. 提出された情報からGASを使ってGoogleカレンダーにイベントを追加する。
解答・解説
function onFormSubmit(e) {
const response = e.response;
const calendar = CalendarApp.getDefaultCalendar();
const title = response.getItemResponses()[0].getResponse(); // イベント名
const startTime = new Date(response.getItemResponses()[1].getResponse()); // 開始日時
const endTime = new Date(response.getItemResponses()[2].getResponse()); // 終了日時
const location = response.getItemResponses()[3].getResponse(); // 場所
calendar.createEvent(title, startTime, endTime, {location: location});
}
このコードでは、フォームの回答からイベント名、日時、場所を取得し、Googleカレンダーにイベントを追加している。createEventメソッドのオプションで場所を設定できる点がこれまでと異なる。
{location: location}はJavaScriptの「オブジェクトリテラル」構文だ。場所(location)を指定するためのオプション設定はブジェクトリテラルを使うことを覚えておこう。
場所も含めてカレンダーに予定を追加することができるんだね!やってみるのが楽しみ!

猫男

catman
正解だ。GASを使いこなして、色々な連携を試してみよう!その一歩が新たな可能性を開くのさ。