質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

765閲覧

【初心者】googleフォームからカレンダーに予定を入れる方法

q13hare

総合スコア1

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/01/20 05:56

前提・実現したいこと

googleフォームで予約管理を行うために、カレンダーへの連携を試みています。
色々と調べてみたものの今回初めてプログラミングに触れたため、
どのようにしたらいいのかわからず手詰まりです。

フォーム・カレンダーで行いたい事は以下の通りです。
・フォームに回答があったとき、日時をカレンダーに登録する。
・B列をタイトル(予約者名)、C列を日付、D列を時間とし、E列は予約終了の分岐にする。
・以下C列からE列の内容の繰り返しになるが、
フォームでの入力があった場合のみカレンダーに登録したい。
・できれば、フォームが送信された時点で予約者名、予約日時のメールを受け取りたい。

何卒よろしくお願いいたします。

発生している問題・エラーメッセージ

エラーメッセージは出ませんが、上記の行いたい事が全く反映できません。
特に現状だと、時間ごとの予定ではなく全日の予定で登録がされます。

エラーメッセージ

該当のソースコード

function calender() { var Sheet = SpreadsheetApp.getActiveSheet(); var lastRow = Sheet.getLastRow(); var title = Sheet.getRange("B" + lastRow).getValue(); var time = Sheet.getRange("C" + lastRow).getValue(); var event = CalendarApp.getCalendarById('id'); //createAllDayEventでカレンダーへイベントを登録 event.createAllDayEvent(title,time); }

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

時間でイベントを登録するためのメソッドは
.createEvent(タイトル,開始日時,終了日時)
です。
開始日時と終了日時には、それぞれdate型の情報を渡します。
C列の日付情報が「2021/1/21」
D列の時間情報が「10:00」
となっていれば例えば
var date = Sheet.getRange("C" + lastRow).getValue();
var starttime = Sheet.getRange("D" + lastRow).getValue();
new Date(date+starttime+":00")
とすればdate型の情報にできます。

ただ、やりたいことはフォームの送信からの実行の様ですので、上記dateやstarttimeのデータはスプレッドシートではなく、フォームの送信情報から受け取った方が良いと思います。送信時の回答データはフォームのスクリプトエディタで

GAS

1function submit(e) { 2 var response = e.response.getItemResponses(); 3}

とすれば、配列で受け取れます。

投稿2021/01/21 00:32

hiroshi0240

総合スコア640

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問