前提・実現したいこと
Google Apps Scriptで栄養素管理Webアプリを作成しようとしています。
機能は以下です。
①Googleフォームから都度食べたものの品目やカロリーをスプレッドシートへ投入
②毎朝8時に「昨日の摂取カロリーは〇〇、摂取タンパク質量は〇〇g、体重は〇〇kgでした」とメールでリマインドしてくれる
発生している問題・エラーメッセージ
①は問題なくできました。
②のコードを書いていますが、うまくいきません。
1.スプレッドシート「栄養素記録(回答)」をSpreadsheetオブジェクトとして取得する。
2.そのSpreadsheetオブジェクトの配下にあるシート「フォームの回答 1」をSheetオブジェクトとして取得する。
3.そのSheetオブジェクトの配下にあるA列(タイムスタンプ)が昨日の日付のC列(摂取カロリー)のセルを取得する。
4.取得した値を合計する
5.そのSheetオブジェクトの配下にあるA列(タイムスタンプ)が昨日の日付のD列(摂取タンパク質)のセルを取得する。
6.取得した値を合計する
7.そのSheetオブジェクトの配下にあるA列(タイムスタンプ)が昨日の日付のE列(体重)のセルを取得する。
8.取得した値の最大値を取得する
9.メールで送信する
この流れでコードを書いています。
現時点では↓
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); const date = new Date(); const today = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd'); const day = date.getDate(); date.setDate(day-1); const yesterday = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd'); for(let i = 2; i<=lastRow; i++) { if(sheet.getRange(i,1).getValue()=== yesterday){ console.log(sheet.getRange(i,3).getValue()); } } }
「昨日」を取得する定数yesterdayを定義し、
for関数を用い、2行から下を順番に処理していくようにし、
if関数で「i,1(タイムスタンプ列)」が「定数yesterday」と一致する「i,3(摂取カロリー列)」を出力する。
というコードを書いたつもりですがうまくいきません。
タイムスタンプが「2020/07/10 4:01:26」のように日付のみではなく時間も含んでいるのが原因でしょうか。
この場合は部分一致で書かなければいけないのでしょうか。
どなたかご教授お願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 05:48
2020/07/10 07:30 編集
2020/07/10 07:29
2020/07/10 08:00 編集
2020/07/10 08:00
2020/07/10 09:03
2020/07/10 15:38