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

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

ただいまの
回答率

90.12%

【自動返信メール】時間の表示がうまくできないです。。。

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,166

NaoyaNishihara

score 14

時間がうまく表示されません。
プログラミング知識がないのでいろんなサイトをみてパーツを寄せ集めて作ってみました。
メールは届きます。

①時刻の表示ーーーー
出力(メール本文)に「9時0分」
というような感じで表示されるのですが、理想としては、
「09時00分」 or 「9時00分」
みたいな感じにしたいです。。。
ーーーーーーーーー

②入力と出力が違うーーーー
それから入力した時刻と出力される時刻とが違って困ってます。。。。
7時と入力してるに1時と出力されてしまいます。
ーーーーーーーーーーーー
![イメージ説明](a7e32cf26f6a00363b576ddd6d23d365.jpeg)

本買って勉強してネットでの検索も頑張ってるのですが勉強&検索が下手なのか全然解決できないです.....
助けてください...

function autoreply() {

 var title = "○○○○○○○○○○○○○○○○○○○○○"; 
 var body
 = "●●●●●●●●●●";

 + "-----------------------記入内容確認-----------------------\n\n";
 var footer
 = "------------------------------------------------------------\n\n"

 var name = '名前';
 var mail = 'メールアドレス';
 var day = '日';
 var intime = '入り時間';
 var outtime = '終了時間';
 var st = '特記事項';
  var address = "";

 var sheet = SpreadsheetApp.getActiveSheet();
 var rows = sheet.getLastRow();
 var cols = sheet.getLastColumn();
 var rg = sheet.getDataRange();
 Logger.log("rows="+rows+" cols="+cols);


  // 名前を取得 最終行の2列目
  var col_name = rg.getCell(rows,2).getValue();
  Logger.log("name →" + name);  

  // 項目を取得
  var col_day = rg.getCell(1, 3).getValue(); 
  // 日付を取得 最終行の3列目
  var day = rg.getCell(rows,3).getValue();
  Logger.log("day →" + day);  
  //YYYY年MM月dd日
  var uday = Utilities.formatDate(day, "JST", "YYYY'年'MM'月'dd'日'");
  Logger.log(uday);

  // 項目を取得
  var col_intime = rg.getCell(1, 4).getValue();    
  // 入り時間を取得 最終行の4列目
  var intime = rg.getCell(rows,4).getValue();
  var date_in = new Date(intime*1000); //日時を取り出す
  var date_in_T = new Date(0,0,0,date_in.getHours(),date_in.getMinutes(),0); //時刻を取り出す
  Logger.log("date_in_T →" +date_in_T);  

  // 項目を取得
  var col_outtime = rg.getCell(1, 5).getValue(); 
  // 終了時間を取得 最終行の5列目
  var outtime = rg.getCell(rows,5).getValue();
  var date_out = new Date(outtime*1000); //日時を取り出す
  var date_out_S = new Date(0,0,0,date_out.getHours(),date_out.getMinutes(),0); //時刻を取り出す
  Logger.log("date_out_S →" + date_out_S);  

  // 項目を取得
  var col_st = rg.getCell(1, 6).getValue();   
  // 特記事項を取得 最終行の6列目
  var st= rg.getCell(rows,6).getValue();
  Logger.log("st →" + st); 

  // メールアドレスを取得 最終行の7列目
  var col_mail = rg.getCell(rows,7).getValue();
  Logger.log("col_mail →" + col_mail);  




 body += "■"+name+"\n";
 body += col_name + "\n\n";
 body = col_name+" さん、今日もお疲れ様でした!\n\n"+body;

 body += "■"+col_day+"\n";
 body += uday + "\n\n";

 body += "■"+col_intime+"\n";
 body += date_in_T.getHours()+"時"+date_in_T.getMinutes()+"分" + "\n\n";

 body += "■"+col_outtime+"\n";
 body += date_out_S.getHours()+"時"+date_out_S.getMinutes()+"分" + "\n\n";

 body += "■"+col_st+"\n";
 body += st + "\n\n";

 body += footer;


 GmailApp.sendEmail(col_mail,title,body);
}


たぶん無駄な文章?が多くて見ずらいかと思いますがなんとかご容赦ください。。。

宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

セルには11:00といった形式で入力していることを前提とします。

時刻の取り出しと、時間と分に分離するところを直してみました。不要な行はコメントアウトして新しいコードを提示しています。あまりスマートなコードではありませんが参考にしてみて下さい。GASの時刻のところは私もすぐに忘れて力技になったりします(苦笑)。

// var date_in = new Date(intime*1000); //日時を取り出す
  // var date_in_T = new Date(0,0,0,date_in.getHours(),date_in.getMinutes(),0); //時刻を取り出す
  var date_in_T = Utilities.formatDate(intime, "GMT+0900","HHmm");

  // var date_out = new Date(outtime*1000); //日時を取り出す
  // var date_out_S = new Date(0,0,0,date_out.getHours(),date_out.getMinutes(),0); //時刻を取り出す
  var date_out_S =  Utilities.formatDate(outtime, "GMT+0900","HHmm");

 // body += date_in_T.getHours()+"時"+date_in_T.getMinutes()+"分" + "\n\n";
 body += date_in_T.substring(0,2)+"時"+date_in_T.substring(2)+"分" + "\n\n";

 // body += date_out_S.getHours()+"時"+date_out_S.getMinutes()+"分" + "\n\n";
 body += date_out_S.substring(0,2)+"時"+date_out_S.substring(2)+"分" + "\n\n";

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/25 12:10

    回答くださってたことに気が付きませんでした!すごく早くに回答していただきありがとうございます!!!

    できました!!すごいです!
    本当に助かりました!
    ありがとうございました!!!!!

    キャンセル

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

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる