【GAS】日報承認システムの日付表示について
Q&A
Closed
解決したいこと
GWS(フォーム・スプレッドシート・GAS)を活用して簡易の日報承認システムを構築しています。
承認者に自動送信されるメール内の日付表示をシンプルにしたいと考えています。
現状と理想
現状:Tue Sep 13 2022 11:49:22 GMT+0900 (Japan Standard Time)
理想:2022/09/13
※ 初心者のため皆さんの記述をコピペしながら組み合わせて構築しています。大変初歩的な質問で申し訳ありません。
記述全体
function sendEmailByEvent() {
//シート内の全データを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("確認シート");
var data = sheet.getDataRange().getValues();
//変更されたセルを取得、また、セルの行数を取得して配列に対応できるように-1した変数を設定
var targetCell = sheet.getActiveCell();
var targetCellRow = targetCell.getRow()-1;
//メール送付先のアドレスとメール題名を設定
var recipient1a = "担当者@gmail.com", subject1a = "課長承認完了(自動配信)"; //本番は担当者アドレスにする
var recipient1b = "課長@gmail.com", subject1b = "課長承認内容確認|TUF承認完了(自動配信)"; //本番は課長アドレスにする
var recipient1c = "部長@gmail.com", subject1c = "要作業|日報部長確認依頼(自動配信)"; //本番は部長アドレスにする
var recipient2a = "担当者@gmail.com", subject2a = "部長最終承認のお知らせ(自動配信)"; //本番は担当者アドレスにする
var recipient2b = "課長@gmail.com", subject2b = "部長最終承認のお知らせ(自動配信)"; //本番は課長アドレスにする
var recipient2c = "部長@gmail.com", subject2c = "部長承認内容確認|部長最終承認のお知らせ(自動配信)"; //本番は部長アドレスにする
//メール本文用に、取得したセルの行データをbody配列にpushする
var body = []
body.push(data[targetCellRow])
var datatitle = data[0];//タイトル行を取得
body = '\― 本メールは自動配信メールです ―\n\n'
body += '以下の通り日報が承認されました。\n\n';
datatitle.forEach((v,i) => body +=" "+v+"|"+data[targetCellRow][i]+"\n"); //タイトル+取得した項目+改行をbodyに追加を繰り返し
//今回のメイン。G行が提出かつH行とI行の文字列をみて判定しメールを送付
if(targetCell.getColumn() === 8){ //8は8行目=H行のこと?
if(data[targetCellRow][6] == "提出" && data[targetCellRow][7] ==="完了") //提出日(タイムスタンプ)とメールアドレスを除く[6]はH行/[7]はI行?
GmailApp.sendEmail(recipient1a, subject1a, body)
GmailApp.sendEmail(recipient1b, subject1b, body)
GmailApp.sendEmail(recipient1c, subject1c, body)
}
if(targetCell.getColumn() === 9){ //9は9行目=I行のこと?
if(data[targetCellRow][6] == "提出" && data[targetCellRow][8] ==="完了") //提出日(タイムスタンプ)とメールアドレスを除く[6]はH行/[8]はJ行?
GmailApp.sendEmail(recipient2a, subject2a, body)
GmailApp.sendEmail(recipient2b, subject2b, body)
GmailApp.sendEmail(recipient2c, subject2c, body)
}
}
参考にしているサイト
自分で試したこと
GASの日付を文字列に変換すればよいことが分かったため、
function myFunction() {
//実行した日付のオブジェクトをtoday変数に格納する
let today = new Date();
//Dateオブジェクトのtoday変数をログ出力する
Logger.log(today);
//formatDateメソッドで日付の表示形式を変換する
today = Utilities.formatDate(today,"JST", "yyyy/MM/dd");
//formatDateメソッドで変換後をログ出力する
Logger.log(today);
}
以上の記述をどこかに入れればよいのかと思ったのですが、どこに追記してもうまく作動しません。
大変初歩的な質問であること承知の上ですがご教示いただけますと幸いです。
↑ @tanaike 様のサポートにより無事解決いたしました!
2022/11/16追記
追加でお聞きしたいことを記載しておりましたが別途質問を立てることにしました。
0