前提・実現したいこと
Googleシートで作成されたカレンダーで指定の曜日のイベント及び日付などのデータを取得し、別シートにリストアップするコードを作成しました。
■希望の機能:指定した曜日にあるすべてのイベント名及び当日の日付を取得して、「test」シートの1列目に日付、2列目からすべてのイベント名を記入。
発生している問題・エラーメッセージ
イベント名の取得まではうまくいきましたが、イベント名を記入する際に、最初のイベントのみ記入され、すべてのイベント名は記入されません。
カレンダー詳細
該当のソースコード
GAS
1var SS = SpreadsheetApp.openById("リンク先");//スプレッドシートを取得 2var TargetSheet = SS.getSheetByName("event");//カレンダー 3var ReturnSheet = SS.getSheetByName("test");//データ記入シート 4var dateRow=2; //日付の列 5var yobiRow=3; //曜日の列 6var TagetSheet_lastCol = TargetSheet.getLastColumn(); 7var TagetSheet_lastRow = TargetSheet.getLastRow(); 8var ReturnSheet_lastCol = TargetSheet.getLastColumn(); 9var ReturnSheet_lastRow = TargetSheet.getLastRow(); 10 11function getEventValue() { 12 var datelist=[]; //日付を格納する配列 13 var eventlist=[]; //イベント名を格納する配列 14 15 for(var i=0;i<TagetSheet_lastCol;i++){ 16 var yobiValue=TargetSheet.getRange(yobiRow,i+1).getValue(); 17 if(yobiValue=="木"){ //木曜日を指定 18 var dateValue=TargetSheet.getRange(dateRow,i+1).getValue(); 19 var EventDataValue=TargetSheet.getRange(6,i+1,TagetSheet_lastRow,1).getValues(); 20 var SaveDataList=[]; 21 for(var y=0;y<EventDataValue.length;y++){ 22 if(EventDataValue[y]!=""){ //イベント種類によっては列が空白になるので、空白のモノをスキップ 23 SaveDataList.push(EventDataValue[y]); //SaveDataListに一旦、当日のイベント名をすべて格納 24 } 25 26 } 27 eventlist.push(SaveDataList); //SaveDataListがリセットされるため、イベント名をこちらに渡す 28 datelist.push(dateValue) 29 } 30 } 31 for(var x=0;x<eventlist.length;x++){ 32 ReturnSheet.getRange(1,x+1).setValue(datelist[x]); 33 ReturnSheet.getRange(2,x+1).setValue(eventlist[x]); 34 } 35 }