回答編集履歴

11

  

2022/09/06 14:10

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ※ GASから1分ごとに扉の状態を取得するとのことですが、その"間"に扉の状態ないような開け閉め動作(GASの次の取得前に、閉じている状態から開けて閉める。もしくは開いている状態から閉めてまた開ける、というような動作)は、状態変化が起きていないものとみなす、という暗黙の前提があるとします。
1
+ ※ GASから1分ごとに扉の状態を取得するとのことですが、隣接するステータス取得タイミングで扉の状態わらないような開け閉め動作(GASの次の取得前に、閉じている状態から開けて閉める。もしくは開いている状態から閉めてまた開ける、というような動作)が行われた場合は、状態変化が起きていないものとみなす、という暗黙の前提があるとします。
2
2
 
3
3
 
4
4
  > ・ステータスがclose⇒openになったタイミングだけ記録し、open⇒openでは何もしない

10

 

2022/09/06 14:06

投稿

退会済みユーザー
test CHANGED
@@ -17,6 +17,6 @@
17
17
  つまり「10分程度」経過すれば自動で閉じるということでしょう。
18
18
  これを前提とした場合、扉が開いている10分間のうち最初のタイミングであることを確認できた時刻を記録するには「確認時のステータスがopenであり、かつ前回の確認時はclose状態であった、と判定できるタイミング」で、その時刻を記録すれば十分です。
19
19
 
20
- 上記のようにすれば、要件を満たす(履歴列に”最初にOPENとなった時刻"が連綿と記録される)のではないでしょうか。
20
+ 上記のようにすれば、要件を満たす(履歴列に”最初にOPENとなったことが確認できた時刻"だけが連綿と記録される)のではないでしょうか。
21
21
   
22
22
 

9

 

2022/09/06 13:53

投稿

退会済みユーザー
test CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
17
  つまり「10分程度」経過すれば自動で閉じるということでしょう。
18
- これを前提とした場合、扉が開いている10分間のうち最初のタイミングであることを確認できた時刻を記録するには「1分ごとに確認したそときにステータスがopenであり、かつ**前回の確認時はclose状態であった、と判定できるタイミング」で、その時刻を記録**すれば十分です。
18
+ これを前提とした場合、扉が開いている10分間のうち最初のタイミングであることを確認できた時刻を記録するには「確認のステータスがopenであり、かつ前回の確認時はclose状態であった、と判定できるタイミング」で、その時刻を記録すれば十分です。
19
19
 
20
20
  上記のようにすれば、要件を満たす(履歴列に”最初にOPENとなった時刻"が連綿と記録される)のではないでしょうか。
21
21
   

8

 

2022/09/06 13:52

投稿

退会済みユーザー
test CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  > ・ステータスがclose⇒openになったタイミングだけ記録し、open⇒openでは何もしない
5
5
  まさにこれをコード化すればよいだけではないでしょうか?
6
- 状態を記録するスプレッドシートのセルを「状態記録セル」、最初にopenになった時刻を記録する列を「履歴列」と呼称することとします。
6
+ 状態を記録するスプレッドシートのセルを「状態記録セル」、"最初にopenになったことを確認できた時刻"を記録していく列を「履歴列」と呼称することとします。
7
7
  つまり、1分ごとにセンサーを確認するとして:
8
8
  ・センサーを確認したときにclose状態だったとき
9
9
  →「CLOSE」という文字列を状態記録セルに記録します。

7

 

2022/09/06 13:51

投稿

退会済みユーザー
test CHANGED
@@ -14,7 +14,8 @@
14
14
  ELSE 状態記録セルが「OPEN」だった場合(「CLOSE」という文字列ではなかった場合) → 何もしません。
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
+ つまり「10分程度」経過すれば自動で閉じるということでしょう。
17
- つまり「10分程度」経過すれば自動閉じということでしょうから、1分ごとに確認したそのときにステータスがopenであり、かつ**直近過去に確認したときはclose状態であった、と判定できるタイミングで、その時刻を記録**すれば十分です。
18
+ これを前提とした場合、扉が開いている10分間のうち最初のタイミングることを確認きた時刻を記録するには「1分ごとに確認したそのときにステータスがopenであり、かつ**前回の確認はclose状態であった、と判定できるタイミングで、その時刻を記録**すれば十分です。
18
19
 
19
20
  上記のようにすれば、要件を満たす(履歴列に”最初にOPENとなった時刻"が連綿と記録される)のではないでしょうか。
20
21
   

6

 

2022/09/06 13:42

投稿

退会済みユーザー
test CHANGED
@@ -3,19 +3,19 @@
3
3
 
4
4
  > ・ステータスがclose⇒openになったタイミングだけ記録し、open⇒openでは何もしない
5
5
  まさにこれをコード化すればよいだけではないでしょうか?
6
- 状態を記録するスプレッドシートのセルを「状態記録セル」、最初にopenになった時刻を記録するセルを「履歴セル」と呼称することとします。
6
+ 状態を記録するスプレッドシートのセルを「状態記録セル」、最初にopenになった時刻を記録するを「履歴」と呼称することとします。
7
7
  つまり、1分ごとにセンサーを確認するとして:
8
8
  ・センサーを確認したときにclose状態だったとき
9
9
  →「CLOSE」という文字列を状態記録セルに記録します。
10
10
 
11
11
  ・センサーを確認したときにopen状態だったとき
12
12
  まず、状態記録セルを読み取ります。そして
13
- IF 状態記録セルが「CLOSE」であった場合→状態記録セルに「OPEN」を記録し、履歴セルの次の行に現在時刻を記録します。
13
+ IF 状態記録セルが「CLOSE」であった場合→状態記録セルに「OPEN」を記録し、履歴の次の空白行に現在時刻を記録します。
14
14
  ELSE 状態記録セルが「OPEN」だった場合(「CLOSE」という文字列ではなかった場合) → 何もしません。
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
17
  つまり「10分程度」経過すれば自動で閉じるということでしょうから、1分ごとに確認したそのときにステータスがopenであり、かつ**直近の過去に確認したときはclose状態であった、と判定できるタイミングで、その時刻を記録**すれば十分です。
18
18
 
19
- 上記のようにすれば、要件を満たす(履歴セルは常に最初にOPENとなった時刻が記録される)のではないでしょうか。
19
+ 上記のようにすれば、要件を満たす(履歴最初にOPENとなった時刻"連綿と記録される)のではないでしょうか。
20
20
   
21
21
 

5

  

2022/09/06 13:40

投稿

退会済みユーザー
test CHANGED
@@ -3,19 +3,19 @@
3
3
 
4
4
  > ・ステータスがclose⇒openになったタイミングだけ記録し、open⇒openでは何もしない
5
5
  まさにこれをコード化すればよいだけではないでしょうか?
6
- 状態を記録するスプレッドシートのセルを「記録セル」と呼称することとします。
6
+ 状態を記録するスプレッドシートのセルを「状態記録セル」、最初にopenになった時刻を記録するセルを「履歴セル」と呼称することとします。
7
- つまり、
7
+ つまり、1分ごとにセンサーを確認するとして:
8
- ・センサーを確認したときにclose状態とき
8
+ ・センサーを確認したときにclose状態だったとき
9
- →「CLOSE」という文字列を記録セルに記録します。
9
+ →「CLOSE」という文字列を状態記録セルに記録します。
10
10
 
11
- ・センサーを確認したときにopen状態とき
11
+ ・センサーを確認したときにopen状態だったとき
12
- まず、記録セルを読み取ります。そして
12
+ まず、状態記録セルを読み取ります。そして
13
- IF 記録セルが「CLOSE」であった場合→現在時刻を上書きします。
13
+ IF 状態記録セルが「CLOSE」であった場合→状態記録セルに「OPEN」を記録し、履歴セルの次の行に現在時刻を記録します。
14
- ELSE 記録セルが「CLOSE」という文字列ではなかった場合 → 何もしません。
14
+ ELSE 状態記録セルが「OPEN」だった場合(「CLOSE」という文字列ではなかった場合 → 何もしません。
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
17
  つまり「10分程度」経過すれば自動で閉じるということでしょうから、1分ごとに確認したそのときにステータスがopenであり、かつ**直近の過去に確認したときはclose状態であった、と判定できるタイミングで、その時刻を記録**すれば十分です。
18
18
 
19
- 上記のようにすれば、要件を満たすのではないでしょうか。
19
+ 上記のようにすれば、要件を満たす(履歴セルには常に最初にOPENとなった時刻が記録される)のではないでしょうか。
20
20
   
21
21
 

4

 

2022/09/06 13:37

投稿

退会済みユーザー
test CHANGED
@@ -5,7 +5,7 @@
5
5
  まさにこれをコード化すればよいだけではないでしょうか?
6
6
  状態を記録するスプレッドシートのセルを「記録セル」と呼称することとします。
7
7
  つまり、
8
- ・センサーを確認したときにclose状態の状態のとき
8
+ ・センサーを確認したときにclose状態のとき
9
9
  →「CLOSE」という文字列を記録セルに記録します。
10
10
 
11
11
  ・センサーを確認したときにopen状態のとき

3

 

2022/09/06 13:36

投稿

退会済みユーザー
test CHANGED
@@ -9,7 +9,7 @@
9
9
  →「CLOSE」という文字列を記録セルに記録します。
10
10
 
11
11
  ・センサーを確認したときにopen状態のとき
12
- 記録セルを読み取ります。
12
+ まず、記録セルを読み取ります。そして
13
13
  IF 記録セルが「CLOSE」であった場合→現在時刻を上書きします。
14
14
  ELSE 記録セルが「CLOSE」という文字列ではなかった場合 → 何もしません。
15
15
 

2

 

2022/09/06 13:34

投稿

退会済みユーザー
test CHANGED
@@ -14,7 +14,7 @@
14
14
  ELSE 記録セルが「CLOSE」という文字列ではなかった場合 → 何もしません。
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
- つまり「10分程度」経過すれば閉じるということでしょうから、1分ごとに確認するときに、**前回閉じていた状態から開いたと判定できるタイミングで、その時刻を記録**すれば十分です。
17
+ つまり「10分程度」経過すれば自動で閉じるということでしょうから、1分ごとに確認したそのときにステータスがopenでありかつ**直近の過去に確認しときはclose状態であっと判定できるタイミングで、その時刻を記録**すれば十分です。
18
18
 
19
19
  上記のようにすれば、要件を満たすのではないでしょうか。
20
20
   

1

 

2022/09/06 13:32

投稿

退会済みユーザー
test CHANGED
@@ -11,7 +11,7 @@
11
11
  ・センサーを確認したときにopen状態のとき
12
12
  →記録セルを読み取ります。
13
13
  IF 記録セルが「CLOSE」であった場合→現在時刻を上書きします。
14
- ELSE 記録セルが「CLOSE」ではなく時刻であった場合 → 何もしません。
14
+ ELSE 記録セルが「CLOSE」という文字列ではなった場合 → 何もしません。
15
15
 
16
16
  質問文によれば扉はつねに「10分程度開く」とのことです。
17
17
  つまり「10分程度」経過すれば閉じるということでしょうから、1分ごとに確認するときに、**前回閉じていた状態から開いたと判定できるタイミングで、その時刻を記録**すれば十分です。