GASで、日付が入った行を取得
→ 取得した日付を1日前、3日前、・・
と計算して出した日付をシートに書き込むことを想定しています。
ですが、
GAS
1function Dayire() { 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const Sheet = ss.getSheetByName('スケジュール管理表'); 4 const MasterHiduke = Sheet.getDataRange().getValues(); 5 6 ///未作業の行だけ抜き出す+行番号 7 const HeaderHiduke = MasterHiduke.shift(), cIndex = {}; 8 for (var i = 0; i < HeaderHiduke.length; i++) cIndex[HeaderHiduke[i]] = i; 9 10 //作業状態が未作業の行だけを取得して配列化 11 const FileHiduke = MasterHiduke 12 .filter(function(e){return e[cIndex['日付確定']] === '未作業'}) 13 .map(function(e){ 14 const Columns = [ 15 16 cIndex['行番号'], 17 cIndex['開催日'], 18 19 ], row = []; 20 for (var i = 0; i < Columns.length; i++) row.push(e[Columns[i]]); 21 return row; 22 }); 23 console.log(FileHiduke); 24 25 for( var i = 0 ; i< FileHiduke.length ; i++){ 26 //開催日 27 const Kaisaibi0 = FileHiduke[i][1]; 28 var Kaisaibi = Utilities.formatDate( Kaisaibi0, 'Asia/Tokyo', 'yyyy/MM/dd'); 29 30 //1日前 31 const D1mae0 = Kaisaibi0; 32 D1mae0.setDate(D1mae0.getYear(), D1mae0.getMonth(),D1mae0.getDate() - 1); 33 34 var D1mae = Utilities.formatDate( D1mae0, 'Asia/Tokyo', 'yyyy/MM/dd'); 35 console.log('[開催日] ',Kaisaibi0); 36 console.log('[D1mae0] ',D1mae0); 37 console.log(D1mae); 38 39 //3日前 40 const D3mae0 = Kaisaibi0; 41 D3mae0.setDate(D3mae0.getYear(), D3mae0.getMonth(),D3mae0.getDate() - 3); 42 var D3mae = Utilities.formatDate( D3mae0, 'Asia/Tokyo', 'yyyy/MM/dd'); 43 console.log('[開催日] ',Kaisaibi0); 44 console.log('[D3mae0] ',D3mae0); 45 console.log(D3mae); 46 47 48 } 49} 50
で作ってみたところ、
16:43:57 情報 [ [ 74, Thu Jul 21 2022 11:00:00 GMT-0400 (Eastern Daylight Time) ] ] 16:43:57 情報 [開催日] Sun Oct 30 2022 11:00:00 GMT-0400 (Eastern Daylight Time) 16:43:57 情報 [D1mae0] Sun Oct 30 2022 11:00:00 GMT-0400 (Eastern Daylight Time) 16:43:57 情報 2022/10/31 16:43:57 情報 [開催日] Mon Jan 30 2023 11:00:00 GMT-0500 (Eastern Standard Time) 16:43:57 情報 [D3mae0] Mon Jan 30 2023 11:00:00 GMT-0500 (Eastern Standard Time)
となってしまい、日付を正しく計算できません、。
もし間違いがあればご教示いただきたく、お願いいたします。
回答2件
あなたの回答
tips
プレビュー