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

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

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

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

Q&A

解決済

1回答

607閲覧

google フォームでの自動返信エラーについて

coniii

総合スコア13

Google Apps Script

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

0グッド

0クリップ

投稿2018/10/01 05:39

編集2018/10/10 06:40

おわかりの方がいらっしゃいましたら教えていただきたく宜しくお願い致します。

申込について、googoleフォームで入力し、該当部署に自動メール配信できるように
設定をしています。

入力項目に「希望日」があり、
入力後、メール配信をすると
日付表示が「Mon Oct 15 2018 00:00:00 GMT+0900 (JST))」になってしまいます。
「2018年9月15日」と表示させるようにしたいのですが、わかりますでしょうか。

以下自動返信メールのスクリプトです

function myFunction() {

// 件名、本文、フッター
var subject = "お申込書の送付";
var body
="ご担当者様\n\n"
+"お疲れ様です。\n\n"
+ "以下の内容にてお申込みがありましたのでご対応をお願い致します。\n"
+ "---------------------------------------------------------------------------------\n";
var footer
= "---------------------------------------------------------------------------------\n\n"
+ "どうぞよろしくお願い致します。\n"

 + "====================================================\n"
署名

  • "====================================================\n"

// 入力カラム名の指定
var NAME_COL_NAME = '申込者名';
var MAIL_COL_NAME = 'メールアドレス';
var TIMESTAMP_LABEL = 'タイムスタンプ';
var BODY_FORM_NAME = '申込書番号'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '申込種別'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '契約種別'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '希望日'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '申込者名'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '電話番号'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '交換所'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '専用線ID'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '報告要否'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = '特記事項'; //フォーム作成時に設定した項目名
var BODY_FORM_NAME = 'primedrive送付キー'; //フォーム作成時に設定した項目名

// メール送信先
var admin = "●●●●@●●●●.co.jp"; // 管理者(必須)
var cc = ""; // Cc:
var reply = admin; // Reply-To:
var to = ""; // To: (入力者のアドレスが自動で入ります)

//------------------------------------------------------------
// 設定エリアここまで
//------------------------------------------------------------

try{
// スプレッドシートの操作
var sh = SpreadsheetApp.getActiveSheet();
var rows = sh.getLastRow();
var cols = sh.getLastColumn();
var rg = sh.getDataRange();
Logger.log("rows="+rows+" cols="+cols);

// メール件名・本文作成と送信先メールアドレス取得 for (var j = 1; j <= cols; j++ ) { var col_name = rg.getCell(1, j).getValue(); // カラム名 var col_value = rg.getCell(rows, j).getValue(); // 入力値   if ( col_name === MAIL_COL_NAME ) {  //メールアドレス to = col_value; }  if ( col_name === TIMESTAMP_LABEL ) { //タイムスタンプ⇒申込日時 col_name = '申込日時'; } body += "【"+col_name+"】\n"; body += col_value + "\n\n"; } body += footer;

// 日付のフォーマットを指定。

if (col_name === '希望日' && value != '') {
value = Utilities.formatDate(value, 'Asia/Tokyo', "YYYY'年'MM'月'dd'日'");
}

// 送信先オプション var options = {}; if ( cc ) options.cc = cc; if ( reply ) options.replyTo = reply; // メール送信 if ( to ) { MailApp.sendEmail(to, subject, body, options); }else{ MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); }

}catch(e){
MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
}
}

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

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

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

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

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

papinianus

2018/10/01 06:04

エラーとのタイトルですが、エラーではなく表示形式が意図通りにならない、という意味でよいのでしょうか?
coniii

2018/10/01 06:21

ご回答ありがとうございます。すみません。エラーではなく、表示形式が意図通りにならないという意味です。また、ご教示頂いた内容にて確認してみましたが、「value]が定義されていないと出てきてしまいました。確認してみます。
guest

回答1

0

ベストアンサー

今の構成だと↓が無意味になっているので、

javascript

1// 日付のフォーマットを指定。 2 3if (col_name === '希望日' && value != '') { 4value = Utilities.formatDate(value, 'Asia/Tokyo', "YYYY'年'MM'月'dd'日'"); 5}

こういう感じにコードブロックを再配置してください

javascript

1try{ 2// スプレッドシートの操作 3var sh = SpreadsheetApp.getActiveSheet(); 4var rows = sh.getLastRow(); 5var cols = sh.getLastColumn(); 6var rg = sh.getDataRange(); 7Logger.log("rows="+rows+" cols="+cols); 8 9// メール件名・本文作成と送信先メールアドレス取得 10for (var j = 1; j <= cols; j++ ) { 11var col_name = rg.getCell(1, j).getValue(); // カラム名 12var col_value = rg.getCell(rows, j).getValue(); // 入力値 13  14 15if ( col_name === MAIL_COL_NAME ) {  //メールアドレス 16to = col_value; 17} 18if ( col_name === TIMESTAMP_LABEL ) { //タイムスタンプ⇒申込日時 19col_name = '申込日時'; 20} 21// 日付のフォーマットを指定。 22 23if (col_name === '希望日' && col_value != '') { // 2018/10/4 24col_value = Utilities.formatDate(col_value, 'Asia/Tokyo', "YYYY'年'MM'月'dd'日'"); 25} 26body += "【"+col_name+"】\n"; 27body += col_value + "\n\n"; 28} 29body += footer; 30 31 32 33// 送信先オプション 34var options = {}; 35if ( cc ) options.cc = cc; 36if ( reply ) options.replyTo = reply; 37 38// メール送信 39if ( to ) { 40MailApp.sendEmail(to, subject, body, options); 41}else{ 42MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); 43} 44}catch(e){ 45MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message); 46} 47}

バグりにくいように全部コピペしましたが、フォーマットを指定のブロックを少し上に移動させただけです。他はいじってないです。

投稿2018/10/01 06:09

編集2018/10/04 07:45
papinianus

総合スコア12705

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

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

papinianus

2018/10/01 06:25

valueをcol_valueにする修正が、漏れていました。修正しました。
coniii

2018/10/04 07:14

ありがとうございます。今度は「value」が定義されていません。と出てきてしまったので確認してみます。
papinianus

2018/10/04 07:46

//2018/10/4というコメントを入れた行にまだ修正漏れがありました。重ね重ね申し訳ない
coniii

2018/10/05 05:14

きちんと表示することが確認できました。この内容で1週間ほど悩んでおり、大変助かりました。 こちらこそ度々コメント頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問