🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google フォーム

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

Google カレンダー

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

Google Apps Script

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

Q&A

1回答

1187閲覧

日付と時間がうまく取り出せません

mmkazu

総合スコア0

Google フォーム

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

Google カレンダー

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/03/02 01:40

前提・実現したいこと

簡易予約システムとして,googleフォームからカレンダーへ(重複等関係なく)登録していく単純なものを作成しています。
(本当は1時間区切りの同時間帯に5名までの予約表として完成を目指していますが・・・・)
GASを利用し始めたばかりで、理解できていません。ご教示いただけますと幸いです。

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

予約名は正しく転載されるようになりましたが下記のコードでは
日付と開始・終了時間(フォームから選択させたもの)がカレンダー上で異なる日付や時間に表記されてしまいます。 
フォーム内の回答結果やスプレッドシートの記録には日時は正しく入力されています。

エラーメッセージ なし

該当のソースコード

function myFunction(e){ //初期設定 var itemResponses = e.response.getItemResponses(); var message = ''; //入力項目取得 for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); if(question=="予約名"){ var cTitle=answer; }else if(question=="内容"){ message=answer; }else if(question=="日付"){ var cDate=answer.replace(/-/g,'/'); var cEDate=cDate; }else if(question=="開始時間"){ var cDate=cDate + " " + answer; }else if(question=="終了時間"){ var cEDate=cEDate + " " + answer; } } //Googleカレンダーへ転記 var objCalendar = CalendarApp.getCalendarById("Calender ID****'); var objEvent = objCalendar.createEvent(cTitle,new Date(cDate),new Date(cEDate),{description:message}).setGuestsCanSeeGuests(false); }

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/03/02 02:16 編集

表記がどう異なるか(何日何時何分になってほしいのに実際にはこの時間になってしまう)を具体的に質問に追記すると回答を得られる可能性が上がります.おそらくスクリプトの書き間違いかタイムゾーンの設定ミスだと思うのですが,現段階では問題の切り分けができません. あと//Googleカレンダーへ転記 でgetCalendarByIdのクォーテーションが閉じてないのは元々ですか?入力時のミスですか?
guest

回答1

0

Google Apps Scriptのタグの未回答を減らしたいため、
古い質問ですが、回答いたします。

単純にカレンダーへのDATA型がうまく渡せていないのが問題だと思われます。
GASやJSで日付データは使いにくいのでライブラリをおすすめします。

DAYJS

var cDate=answer.replace(/-/g,'/');

ここの入力内容がどのような形になるかわからないのでなんとも言えませんが、
仮にフリーテキスト形式だとしたらこのようにすれば正確なDATA型で渡せます。

例/2021/05/11 ←フォームの回答内容
var cDate = dayjs.dayjs(answer).$d

投稿2021/05/21 10:50

Tatsunosuke

総合スコア599

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問