前提・実現したいこと
期間を指定して発注シートに一括記入するコードを作成しています。
イベント期間はいつも決められた日数となりますので、期間の数字を設定することで、開催期間を計算して記入してもらう形となります。
テスト用に設定した日付
・2020/02/20
・2020/02/27
・2020/03/05
・2020/12/27
実行した結果
開始日:02/51(木)
終了日:02/57(水)
開始日:02/58(木)
終了日:03/64(水)
開始日:03/65(木)
終了日:03/71(水)
開始日:12/362(日)
終了日:01/02(日)
発生している問題・エラーメッセージ
実行後、Logにて確認した結果、日にちが31を超えています。
また、CountDay(num,StartDate)実行の後、StartDate、YobiList[StartYobi]、EndDate、YobiList[EndYobi]の変数を続けて使いたいため、returnを使って変数を渡して見ましたが、変数が存在しないとエラーがでました。
該当のソースコード
GAS
1 2function AutoOrder_MainProtest2() { 3const Book = SpreadsheetApp.getActive(); 4const InfoSheet = Book.getSheetByName("info"); //発注詳細を格納するシート 5const ClassValue = InfoSheet.getRange("A:A").getValues(); //発注の分類 6const OrderStatus = InfoSheet.getRange("H:H").getValues(); //発注の状態(未発注,発注済み) 7 8for(var num =0;num<ClassValue.length;num++){ 9if(OrderStatus[num]=="未発注"){ //未発注のみ処理を行う 10var StartDate = new Date(InfoSheet.getRange(num+1, 6).getValue()); //一括処理を行うため、F列は開始日が記入されている 11CountDay(num,StartDate); 12 13} 14function CountDay(num,StartDate){ 15const Month_TypeA=[1,3,5,7,8,10,12]; //31日の月 16const Month_TypeB=[4,6,9,11]; //30日の月 17const Month_TypeC=[2]; //2月は29日 18const YobiList= ["日", "月", "火", "水", "木", "金", "土"]; //getDay()で得た値を曜日に変換するためのリスト 19 20var StartDay = StartDate.getDate(); 21var year =StartDate.getFullYear(); 22var month =StartDate.getMonth()+1; //最初のMonthは0のため、+1 23var StartYobi=StartDate.getDay(); 24var StartDate = Utilities.formatDate(StartDate, 'Asia/Tokyo', 'MM/DD'); 25var EndDay =StartDay+6; 26 27if(Month_TypeA.indexOf(month)>=0 && EndDay>31){ 28var EndDay=EndDay-31; 29var month=month+1; 30if(month==13){ 31var year=year+1; //年越しの場合 32} 33 } 34 else if (Month_TypeB.indexOf(month)>=0 && EndDay>30){ 35var EndDay=EndDay-30; 36var month=month+1; 37 } 38 else if (Month_TypeC.indexOf(month)>=0 && EndDay>29){ 39var EndDay=EndDay-29; 40var month=month+1; 41 } 42var EndDate = new Date(year,month-1,EndDay); 43var EndYobi =EndDate.getDay(); 44var EndDate = Utilities.formatDate(EndDate, 'Asia/Tokyo', 'MM/DD'); 45 46Logger.log("開始日:"+StartDate+"(" + YobiList[StartYobi] +")"); 47Logger.log("終了日:"+EndDate+"(" + YobiList[EndYobi] +")"); 48} 49} 50}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/23 01:58