プログラミング初学者の事務職GAS使いの者です。
初歩的な質問とは存じますが、お知恵を拝借させて頂きたく投稿いたしました。
前提・実現したいこと
スタンドアロン型のGASで平日と土日祝を判定してリマインドメールが自動送信されるツールを作成しているのですが、
メールを送信するユーザー定義関数の処理に引数の値が入らず、スクリプトが動作せず行き詰まっております。
発生している問題・エラーメッセージ
TypeError: date.getDay is not a function
該当のソースコード
GAS
1//メールを送信する関数 2function sendRemindMail() { 3 const date = Utilities.formatDate(new Date(),"Asia/Tokyo","yyyy/MM/dd"); 4 const weekday_address ="weekday@email.com" ; //平日の送信先アドレス 5 const holiday_address ="holiday@email.com" ; //土日祝の送信先アドレス 6 const subject = "リマインドメール_" + date ;//件名 7 const body = "本日も作業を忘れずにお願いします。" ;//本文 8 if (isHoliday_(date)){//土日祝の場合にtrue処理 9 console.log("土日祝の処理が実行されます"); 10 }else{ 11 console.log("平日の処理が実行されます"); 12 } 13} 14 15//休日かどうかを判定する関数 16function isHoliday_(date) { 17 18 // ①土日の判定 19 const day = date.getDay(); //曜日取得 20 if (day === 0 || day === 6) return true; 21 22 // ②祝日の判定 23 const id = 'ja.japanese#holiday@group.v.calendar.google.com' 24 const cal = CalendarApp.getCalendarById(id); 25 const events = cal.getEventsForDay(date); 26 //なんらかのイベントがある=祝日 27 if (events.length) {return true; 28 }else{ 29 return false; 30 } 31 }
試したこと
個別の関数で引数に日付を入れると想定通りの動作が確認できておりましたので、
date.getDay();
この処理でエラーが発生している(8行目と19行目)と実行ログに記載があったことから、変数dateのスコープに問題があるのかと思い、
関数の外の一番上の行に移してグローバル変数として扱ってみましたが同様のエラーが発生し解決できませんでした。
補足情報
土日祝の判定部分についてはこちらのサイトより引用させていただきました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/24 07:58 編集