問題解決したので記載します。
function dateToday() {
//日付の取得に関する変数
//指定するスプレッドシート
const spreadSheet = SpreadsheetApp.openByUrl('対象スプレッドシート');
//指定するシート名
const sheetName = spreadSheet.getSheetByName('対象シート');
//①取得する範囲を指定(A列)※終わりをA4に設定していたがA列全てに変更。
const FColumn = sheetName.getRange('A2:A');
//②指定した範囲の値を取得する
const FValues = FColumn.getValues();
//③取得した値を変換する(yyyy/mm/dd)
//うまくいかなかったコード
//const date = Utilities.formatDate(new Date(FValues), "JST", "yyyy/MM/dd");
//itagakiさんの回答を反映してループして個々をDateとformatDateする。
//取得した値をカウントする(ループ用)
var count = FValues.length;
//取得した値の数をループする
for(var i = 0; i < count; i++){
//FValuesの値を個別に取得
var FresultD = FValues[i];
//取得した値を"YYYY/MM/DD"形式の文字列にする
var PDate = new Date(FresultD);
var date = Utilities.formatDate(PDate, "JST", "YYYY/MM/dd");
//出力する
Logger.log(date);
}
}
ループで個々を取得することで"YY/MM/DD"形式の文字列に変換できました。
これによってスプレッドシートに記載されている値の表示形式をあまり気にせず取得できるようになりました。
機能を追加して取得した値を納期日として、当日か前日か判断し、該当したら自動でメールを送信するようにしました。
function autoSendMail() {
//日付の取得に関する変数
//指定するスプレッドシート
const spreadSheet = SpreadsheetApp.openByUrl('対象スプレッドシート');
//指定するシート名
const sheetName = spreadSheet.getSheetByName('対象シート');
//①取得する範囲を指定(A列)
const FColumn = sheetName.getRange('A2:A');
//②指定した範囲の値を取得する
const FValues = FColumn.getValues();
//【追加部分1】
//今日の日付データを取得(yyyy/mm/dd)
var preToday = new Date();
const today = Utilities.formatDate(preToday, "JST", "YYYY/MM/dd");
//前日判定のため今日の日付を1日プラスする(yyyy/mm/dd)
var preBeforeT = new Date();
preBeforeT.setDate(preBeforeT.getDate() + 1);
const beforeT = Utilities.formatDate(preBeforeT, "JST", "YYYY/MM/dd");
//③取得した値を変換する(yyyy/mm/dd)
//【追加部分2】
//対象数の集計
var Dcount1 = 0;//前日
var Dcount2 = 0;//当日
//ループして個々をDateとformatDateする。
//取得した値をカウントする(ループ用)
var count = FValues.length;
//取得した値の数をループする
for(var i = 0; i < count; i++){
//FValuesの値を個別に取得
var FresultD = FValues[i];
//取得した値を"YYYY/MM/DD"形式の文字列にする
var PDate = new Date(FresultD);
var date = Utilities.formatDate(PDate, "JST", "YYYY/MM/dd");
//出力する
Logger.log(date);
//【追加部分3】
//④取得した値が当日か前日か判断する。
//条件:今日が納期の前日であるか
if(beforeT == date){
//対象数カウント
Dcount1++;
//対象日付をメール本文に反映
var date1 = date;
//条件:今日が納期の当日であるか
}else if(today == date){
//対象数カウント
Dcount2++;
//対象日付をメール本文に反映
var date2 = date;
}else{Logger.log('該当しない');}
}
//【追加部分4】
//⑤メール送信に関する設定
//送信先のメールアドレス
const recipient = 'メールアドレス';
//メールタイトル
const subject1 = '【前日だよ】';
const subject2 = '【当日だよ】';
//送信者名
const options = {name: '送信者'};
//受信者名
const recipientName = '受信者';
//前日メール本文
var body1 = `${recipientName}様\n\nお疲れ様です。\n納期日の前日となります。\n納期日:${date1}\n対象件数:${Dcount1}\n\nご対応よろしくお願いします。`;
//当日メール本文
var body2 = `${recipientName}様\n\nお疲れ様です。\n納期日の当日となります。\n納期日:${date2}\n対象件数:${Dcount2}\n\nご対応よろしくお願いします。`;
//対象件数があるときメールを送信する
if(Dcount1 > 0){
//前日メールを送る
GmailApp.sendEmail(recipient, subject1, body1, options);
}
if(Dcount2 > 0){
//当日メールを送る
GmailApp.sendEmail(recipient, subject2, body2, options);
}
}
改めてご回答頂き感謝します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/02 03:40