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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Google Apps Script

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

Q&A

1回答

1338閲覧

Google Form自動送信メールの日付の表示形式を変更したい

negihito

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿2021/06/11 05:17

発生している問題

グーグルFormで日付を入力し、下記のコードでメールで内容を自動送信すると、日付が(Sun Jun 06 2021 00:00:00 GMT+0900 (日本標準時))のように表示されてしまいます。

2021/6/6 のように表示したいです。

似たような内容の質問はありましたが…
コピペして使いたい内容に合わせただけで、初心者なもので快く回答頂けますと幸いです。

エラーメッセージ

function

1 2 var subject = "報告が追加されました"; //件名 3 var body = "以下の内容で更新されました";//文面 4 var message = "実行をお願いいします";//依頼内容 5 var name = "";//依頼者 6 var date = "";//日付 7 8 // スプレッドシート操作、シート名指定 9 var sh1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("回答累積"); 10 var rows = sh1.getLastRow(); 11 var cols = sh1.getLastColumn(); 12 var rg = sh1.getDataRange(); 13 14 //依頼内容を取得 15 for (var i = 1; i <= 11; i++ ) { // i<=の後ろの数字は列数を記入してください 16 var col_name = rg.getCell(1, i).getValue(); // 項目名 17 var col_value = rg.getCell(rows, i).getValue(); // 内容 18 if ( col_value === "" ){col_value= "未記入";} // 記入なしの項目「未記入」と記載 19 message += "【"+col_name+"】\n" + col_value + "\n\n"; 20 } 21 22 body = "アンケートが回答されました\n" 23 + "※本メールは自動配信されています。\n" 24 + "詳しくは下記をご覧ください。\n-----------------------\n\n" 25 + message; 26 27 // メール送信先 28 var admin = "";//配信失敗通知 29 var cc = "";//任意 30 var bcc = "";//任意 31 var reply = "";//任意 32 var to = "";//受信者(管理者)のメアド 33 var from = "";//FROMのメアド 34 35 // メール送信 36 if ( to ) { GmailApp.sendEmail(to, subject, body, { cc:cc, from:from }); 37 }else{ GmailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);} 38 39 } 40 41コード

試したこと

SPREADSHEETの表示形式の変更などでも変わりませんでした。

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

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

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

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

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

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

guest

回答1

0

GoogleAppsScript

1 2//依頼内容を取得については、getValues()で二次元配列として取得するのが簡単です。 3console.log(rg.getValues()); 4 5//日付はデータを変数に入れてからこのようにして変換できます。 6//var date_value = ... 7var date = Utilities.formatDate(date_value, "Asia/Tokyo","yyyy/M/d"); 8console.log(date); 9

取得後for文で一行ごとに値を取り出して、各行ごとにメールを送信できます。

投稿2021/06/11 22:33

gas.engine

総合スコア608

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

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

negihito

2021/06/14 03:13

早速の回答大変嬉しく思います、ありがとうございます。 取り急ぎ、以下のようにしてみましたが、エラーとなってしまいました。 function sendMailFromForm() { var subject = "報告が追加されました"; //件名 var body = "以下の内容で更新されました";//文面 var message = "実行をお願いします";//依頼内容 var name = "";//依頼者 var date = Utilities.formatDate("", "Asia/Tokyo","yyyy/M/d")    違うのは何となく分かってはいるのですが、メール内容全体が(Sun Jun 06 2021 00:00:00 GMT+0900 (日本標準時))のように表示されてしまうので、全体に適用するにはこちらかと思いました。  getValuesでの取得は、現在方法探しておりますが、getValuesの中でi,をどのように指定するか分かりかねてます。  不勉強にも程があるとは存じています、誠に申し訳ございません。また、試行錯誤の中で回答が遅くなり申し訳ございません。
gas.engine

2021/06/14 04:12 編集

①>var date = Utilities.formatDate("", "Asia/Tokyo","yyyy/M/d") 一つ目の引数が "" ですが、シートから日付のデータを読み込んだりしていないのですか? ②>メール内容全体が(Sun Jun 06 2021 00:00:00 GMT+0900 (日本標準時))のように表示されてしまう 変数bodyにdateが使用されていないので、別のエラーのように見えます。 { cc:cc, from:from }をなくして一度作動してどういう結果になりますか? 日付がどのように見えているか画像があれば追加してほしいです。 よく確認すると最後の一行だけのデータ取得だったため、現在のコードより良いとは言えないので、そのままでよさそうですね。失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問