【GAS/スプシ】時刻の比較を使って記入するべき行を判断して表示させる方法

実現したいこと

1日のスケジュール表を作っています。

一覧シートには、
・予定のタイトル
・開始時刻(例:2024/4/1 9:00:00)
をヘッダーにした表があります。

スケジュール表シートには
・30分刻みの時刻(上のセル+"0:30")の列
・予定のタイトルを入れたい空欄列
があります。

一覧シートに書き出してある予定のタイトルを、スケジュール表シートの該当する時間の行に書き込む、という動作がしたいです。

発生している問題・分からないこと

調べながら自力でコードを書いてみて実行してみましたが、実行エラーは出なかったものの、スケジュール表への書き込みは全くされていませんでした。
書き方が間違っているのか、そもそも組み立て方が違うのか、わかりません。

詳しい方のアドバイス、よろしくお願いします。

イメージ説明
イメージ説明

該当のソースコード

GAS

1//インプットシートの予定を該当する開始時間のセルへ振り分ける 2function scheduleSetting() { 3 var spreadsheetID = SpreadsheetApp.getActiveSpreadsheet().getId(); 4 5 var dataSheetName = 'datasheet'; 6 var displaySheetName = 'Today'; 7 8 var sheet = SpreadsheetApp.openById(spreadsheetID).getSheetByName(dataSheetName); 9 //行の定義 10 var lastRow = sheet.getLastRow(); 11 12 13 for(var i = 2; i <= lastRow; i++){ 14 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dataSheetName); 15 //記入する予定名を決める 16 var eventName = sheet.getRange(i,1); 17 //記入する予定の開始時刻を取得 18 var startDateString = sheet.getRange(i,2).getValue(); 19 var startDate =new Date(startDateString); 20 for(var j = 7, k = 9; j <=52, k <=54; j+=2, k+=2){ 21 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(displaySheetName); 22 var timeString = sheet.getRange(j,3).getValue(); 23 var timeString2 = sheet.getRange(k,3); 24 var time = new Date(timeString); 25 var time2 = new Date(timeString2); 26 if(time.getTime() <= startDate.getTime() < time2.getTime()){ 27 sheet.getRange(j,4).setValue(eventName); 28 } 29 } 30 31 } 32 33}

試したこと・調べたこと

上記の詳細・結果

時刻の比較ができていなかったので調べて直しましたが、結果は変わらずでした。

Googleカレンダーを使えば自力でやらなくていいのでは?と思われるかもしれませんが、この一覧シートのデータは共有しているGoogleカレンダーからGASでスプシに移してきています。また、Googleカレンダーにプラスして書きたいことなどがあるので、自力で作っています。

補足

特になし

コメントを投稿

0 コメント