実現したいこと
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}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
時刻の比較ができていなかったので調べて直しましたが、結果は変わらずでした。
Googleカレンダーを使えば自力でやらなくていいのでは?と思われるかもしれませんが、この一覧シートのデータは共有しているGoogleカレンダーからGASでスプシに移してきています。また、Googleカレンダーにプラスして書きたいことなどがあるので、自力で作っています。
補足
特になし
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/04/12 05:59 編集
2024/04/12 10:15