GoogleフォームとGoogleカレンダーを連結して処理を自動化したい、というご要望は少なくありません。その内の1つが、Googleフォームの回答を、自動でGoogleカレンダーに登録したいといった内容です。

Googleフォームとリンクしたスプレッドシートの回答シートに新しい回答が送信されて来たタイミングで、GAS(Google Apps Script)を使用してGoogleカレンダーに自動でアイテムを作成するといった処理内容になります。

今回ご紹介する私が作成したサンプルコードの主な仕様は以下の通りです。

<サンプルコードの仕様>

・サンプルで使用するGoogleフォームやスプレッドシートの回答シートの中身は後ほどご案内する画像の通りとなっています。
・"回答シートの名前"の部分を、実際の回答シート名に置き換えてください。
・"カレンダーID"の部分を、ご登録されたいGoogleカレンダーのカレンダーIDに置き換えてください。
・descriptionの値は、カレンダーアイテムの詳細欄に挿入されます。
・招待を送りたい宛先が存在する場合には、"招待したいGoogleアカウント"を招待先のGoogleメールアドレスに置き換えてください。招待が不要な場合には、guests:とsendInvites:の行自体をコメントアウトまたは削除してください。

サンプルコードをカスタマイズすればかなり便利にご利用いただけるかと思いますので、ぜひ、ご自由にお使いください!

※ご質問にはお答えできませんので予めご承知おきくださいませ。

Googleフォームイメージ

Googleフォームイメージ1
Googleフォームイメージ2

スプレッドシートイメージ

スプレッドシートイメージ

カレンダーアイテムイメージ

カレンダーアイテムイメージ

コード

function createCalendarItem() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("回答シートの名前");
  const calendar = CalendarApp.getCalendarById("カレンダーID");

  const lastRow = sheet.getLastRow();
  const lastColumn = sheet.getLastColumn();
  const data = sheet.getRange(lastRow, 1, 1, lastColumn).getValues()[0];

  const title = data[2] + "_" + data[3];
  const startDate = data[4];
  const endDate = data[5];
  const description = data[6] + "\n" + data[7] + "\n" + data[8];

  const options = {
    description: description,
    guests: "招待したいGoogleアカウント",
    sendInvites: true, // 招待メールを送る場合はtrue、送らない場合はfalse
  };

  calendar.createEvent(title, startDate, endDate, options);
}

トリガー設定

対象関数:createCalendarItem

イベントのソースを選択:[ スプレッドシートから ]
イベントの種類の選択:[ フォーム送信時 ]