フォームに入力された値から、カレンダーのイベントを作成するGoogle Apps Scritpです。Googleアカウントを持っていない人に予定を入れてほしい時に使えるかも?
GoogleフォームとGoogleカレンダーを使用します。スクリプトはフォームのコンテナバインド型として登録します。
まずはフォームを作ります。
カレンダーイベントを作成するために、通常使用する項目を用意しました。
設問の名称(日付、タイトルなど)を元に、必要な値を拾っています。設問名を変えた場合はコードの修正もお願いします。
イベントを追加するカレンダーを指定します。
特定の個人のカレンダーならGmailのアドレスでOKです。共有カレンダーの場合はGoogleカレンダーの設定からカレンダーIDを確認してください。
なお、そのカレンダーに対して変更権限がないと書き込めませんのでご注意ください。
フォームの送信時に動作してほしいので、トリガーをセットします。
適当な値を入れて動作確認してみましょう。
フォームを送信してちょっと待つと、カレンダーにイベントが現れました!
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00100/index.html
*/
function onSubmit(e) {
// ######### 事前設定ここから ########
// 予定を反映させるカレンダーのID(通常はメールアドレス)をセットしてください
const calendar_id = '**************************';
// ######### 事前設定ここまで ########
// 「FormApp.getActiveForm を呼び出す権限がありません」というエラーが出たので明示的にFormAppを呼び出す。
FormApp.getActiveForm();
// フォームの項目や回答を取得する
const form_responses = e.response.getItemResponses();
// 回答を格納する変数を宣言
let event_date, event_start, event_end, event_title, event_desc, event_location;
// フォームの項目数だけループする
for (var i = 0; i < form_responses.length; i++) {
// フォームの質問を取得
let question = form_responses[i].getItem().getTitle();
// 質問に対する回答を取得する
let answer = form_responses[i].getResponse();
// 項目名から、それぞれの値を該当の変数に格納していく
if (question == '日付') {
event_date = answer;
} else if (question == '開始時刻') {
event_start = answer;
} else if (question == '終了時刻') {
event_end = answer;
} else if (question == 'タイトル') {
event_title = answer;
} else if (question == '詳細') {
event_desc = answer;
} else if (question == '場所') {
event_location = answer;
}
}
// 日付と日時を連結して、Dateオブジェクトを作成する
event_start = new Date(event_date + ' ' + event_start);
event_end = new Date(event_date + ' ' + event_end);
// 説明と場所はoptionでセットする
let options = {
description: event_desc,
location: event_location
}
// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendar_id);
// 予定を作成する
calendar.createEvent(event_title, event_start, event_end, options);
}
フォームが送信されたら、管理者に対して質問と回答をメールで通知するGoogle Apps Scriptです。標準機能では回答があったことの通知しかできませんが、GASを使えば回答内容も送信できます。
Googleフォームが送信されるたびに、回答内容をスライドに反映させるGoogle Apps Scriptです。思いつきで作ったんですが、自己紹介やアイディアなどを集める時に良いかも?
フォームが送信されたら、その内容とともにSlackに通知してくれるGoogle Apps Scriptです。お問い合わせが来たときにチーム全員がすぐ知りたいときにどうぞ。