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

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

新規登録して質問してみよう
ただいま回答率
85.50%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

3184閲覧

googleフォームの日時の回答がSSで意図したように表示されない

nakaaza

総合スコア10

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2018/09/27 08:43

編集2022/01/12 10:55

前提・実現したいこと

googleフォームの回答をスプレッドシートに反映させる際、日時の回答を「2018年9月27日(木) 10:00」の形式で表示させたい。

ここに質問の内容を詳しく書いてください。
googleフォームで希望日時を回答してもらい、GASから確定した日時をメールで送信しています。
現状、メール本文には getDisplayValue() で取得した値を使っています。(getValue()だとdatetime形式になり意図したように表示されないため)
しかし、スプレッドシートで予め該当セルに「2018年9月27日(木) 10:00」という表示形式を設定していても、新たに送信されたフォームの回答では「2018/09/27 10:00:00」という形式になってしまいます。
送信後に表示形式を変更すると意図した形式になるが、フォーム送信時に即メール送信プログラムを動かしているので意味がない。

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

スプレッドシートに反映されたgoogleフォームの日時についての回答が意図した形式で表示されない

試したこと

スプレッドシート側で表示形式を設定した→新たなフォームが送信された時に表示形式が上書きされてしまい日付のみになる。

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

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

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

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

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

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

macaron_xxx

2018/09/28 03:49

スプレッドシートの日付に重点を置かれていますが、GASで送信するメールの日付形式が正しい形になればスプレッドシートの表示形式は直す必要がない。という認識でいいですか?
guest

回答1

0

gasではtoLocaleString()が機能しないので、例えばGAS(JavaScript)でよく使う日付フォーマット処理を書きましたを使って

javascript

1/** 2 * 日付のフォーマッター 3 * @param {date} date dateオブジェクト 4 * @param {string} format 書式フォーマット 5 */ 6function formatDate(date, format) { 7 format = format.replace(/yyyy/g, date.getFullYear()); 8 format = format.replace(/mm/g, ('0' + (date.getMonth() + 1)).slice(-2)); 9 format = format.replace(/dd/g, ('0' + date.getDate()).slice(-2)); 10 format = format.replace(/aaa/g, ['日','月','火','水','木','金','土'][date.getDay()]) 11 format = format.replace(/AAA/g, ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][date.getDay()]) 12 format = format.replace(/HH/g, ('0' + date.getHours()).slice(-2)); 13 format = format.replace(/MM/g, ('0' + date.getMinutes()).slice(-2)); 14 format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2)); 15 format = format.replace(/SSS/g, ('00' + date.getMilliseconds()).slice(-3)); 16 17 return format; 18}; 19/** 20 * 処理案 21 */ 22function ideal() { 23 var dateObj = 回答項目.getValue(); 24 Logger.log(formatDate(dateObj, 'yyyy年mm月dd日(aaa) HH:MM')); 25}

とかってやればいいんじゃないかと

投稿2018/09/28 05:02

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問