上記のような掃除当番表を作成しました。
このスプレッドシートの表に基づいて、期日が来たら、メールでお知らせするといった事がやりたいと考えています。A列の日付が今日の日付と合致したら、D列に記載のメールアドレスを取得、〇〇さんに本日、あなたが掃除当番ですよ。 本文には、掃除する場所も合わせて伝えられるようにしたいです。
また、土日の場合は、本日の掃除当番の該当者はいません。
undefindという表示が出ないようにしたいと考えています。
IF文が必要であるという事はわかっているのですが、上手く出来ません。ご教示いただけますでしょうか?テストでメールを送ったところ、全てundefindになってしまいます。おそらく配列から情報を取り出す部分で失敗しているのだと思います。
pixiv insideで公開されていた内容も参考にしましたが、苦戦しています。
https://devpixiv.hatenablog.com/entry/2016/12/19/180000
//ソースコードここから
function inChargeOfCleaning() {
var url = 'https://docs.google.com/spreadsheets/d/1mmRhZxOhjSbJJrYUdDVRD9w9FEmMJAeUGDCkUZWS_e8/edit#gid=0';
spreadsheet = SpreadsheetApp.openByUrl(url);
var sheet = spreadsheet.getSheetByName('掃除当番表');
//シートの内容を読み込んで、日付、曜日、名前、メールアドレス、掃除場所を取得する。
var formattedDate = Utilities.formatDate( new Date(),'Asia/Tokyo', 'M月d日'); //2行目の1列目A2:Aから日付を読み込む
var cal = sheet.getRange(2,1,sheet.getLastRow()-1).getValues() + formattedDate;
var day = sheet.getRange(2,2,sheet.getLastRow()-1).getValues(); //2行目の2列目B2:Bから曜日を読み込む
var nameList = sheet.getRange(2,3,sheet.getLastRow()-1).getValues(); //2行目の3列目 C2:Cから名前を読み込む
var mail = sheet.getRange(2,4,sheet.getLastRow()-1).getValues(); //2行目の4列目 D2:Dからメールアドレスを読み込む
var place = sheet.getRange(2,5,sheet.getLastRow()-1).getValues();//2行目の5列目 E2:Eから掃除をする場所を読み込む
for( var i = 0, l = nameList.length; i < l; i++ );
for( var i = 0, l = day.length; i < l; i++ );
for( var i = 0, l = mail.length; i < l; i++ );
for( var i = 0, l = cal.length; i < l; i++ );
for( var i = 0, l = place.length; i < l; i++ );
var body = 'お掃除をする場所は、' +place[i] +'です。' +'\n'+'よろしくお願いします。';
//Eメールを送る。
/*
if(colDate.toLocaleDateString() == date.toLocaleDateString()) {
var bingo = nameList[i][1];
for(var j = 1; j <= 7; j++) {
text = text + (new Date(values[i+j][0])).toLocaleDateString() + "\t" + values[i+j][1] + "\n";
}
var subject = cal[i] + '(' + day[i] +')' +'の'+ '掃除当番は' + nameList[i] + 'さんです。';
};
GmailApp.sendEmail(mail,subject,body);
*/
Logger.log(cal[i] + day[i] + nameList[i])
}
回答2件
あなたの回答
tips
プレビュー