質問編集履歴

5

微修正

2018/03/29 04:01

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -114,11 +114,11 @@
114
114
 
115
115
 
116
116
 
117
- 今回の質問のネックは、トリガーの変更時に、
117
+ 今回の質問のネックは、トリガーの設定変更時に、
118
118
 
119
119
  一旦そのトリガーを削除していなかったらしいことだったみたいです。
120
120
 
121
- トリガーを変更する際は、一度そのトリガーを削除して、
121
+ トリガーの設定を変更する際は、一度そのトリガーを削除して、
122
122
 
123
123
  もう一度、初めから設定し直す必要があるみたいですね。
124
124
 

4

解決後のまとめを追記した。

2018/03/29 04:01

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -101,3 +101,163 @@
101
101
  期待通りの結果を得るには、それをどのように書けばよいかわかりません。
102
102
 
103
103
  アドバイスをいただけると嬉しいです。
104
+
105
+
106
+
107
+
108
+
109
+ #**~解決後のまとめ~**
110
+
111
+ Zuishinさんの回答を参考に解決しましたので、まとめておきます!
112
+
113
+ というか、後日談的なやつです。
114
+
115
+
116
+
117
+ 今回の質問のネックは、トリガーの変更時に、
118
+
119
+ 一旦そのトリガーを削除していなかったらしいことだったみたいです。
120
+
121
+ トリガーを変更する際は、一度そのトリガーを削除して、
122
+
123
+ もう一度、初めから設定し直す必要があるみたいですね。
124
+
125
+ 今回もそのようにしたつもりだったのですが、していなかった模様…?
126
+
127
+ 設定し直すと、やはり「値の変更」でも「編集時」でも、
128
+
129
+ 仮にイベントハンドラでなくても、動作するみたいですね。
130
+
131
+ お騒がせいたしました…。
132
+
133
+
134
+
135
+ ---
136
+
137
+
138
+
139
+ ### 後日談。
140
+
141
+ 質問文には書いていなかったことなのですが、
142
+
143
+ 今回、スプレッドシートのA列に日付リストがある状態で、
144
+
145
+ B列からデータを入力していくという状況であり、
146
+
147
+ 私がもともと書いていたスクリプトのIF関数の条件、
148
+
149
+
150
+
151
+ ```javaScript
152
+
153
+ // 変更のあったセルの左隣のセルの値が空白ではなく、変更のあったセルの値が変更のあったセルの左隣のセルの値よりも小さかった時に
154
+
155
+ if( ( val2 != "" && val2 > val ) )
156
+
157
+ ```
158
+
159
+
160
+
161
+ このなかの前半部分「変更のあったセルの左隣のセルの値が空白ではなく、」だけでは、
162
+
163
+ 日付リストの横のデータを入力したときにも反応してしまうということがわかったので、
164
+
165
+ 「変更のあったセルの2つ左隣のセル」の情報も取得して活用することで、
166
+
167
+ 日付リストの横にデータを入力したら反応してしまう問題を解決しました。
168
+
169
+
170
+
171
+ 最終的にはこんな感じのスクリプトになりましたので、お納めください(?)。
172
+
173
+
174
+
175
+ ```javaScript
176
+
177
+ function onEdit(e) {
178
+
179
+ // 変更のあったシート
180
+
181
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
182
+
183
+ var sh = ss.getActiveSheet();
184
+
185
+ // 変更のあったセル
186
+
187
+ var cell = ss.getActiveRange();
188
+
189
+ Logger.log(cell);
190
+
191
+ // 変更のあったセルの有る行番号
192
+
193
+ var r = cell.getRow();
194
+
195
+ Logger.log(r);
196
+
197
+ // 変更のあったセルの有る列番号
198
+
199
+ var c = cell.getColumn();
200
+
201
+ Logger.log(c);
202
+
203
+ // 変更のあったセルの左隣のセル
204
+
205
+ var cellLeft = sh.getRange(r, c - 1);
206
+
207
+ Logger.log(cellLeft);
208
+
209
+ // 変更のあったセルの2つ左隣のセル
210
+
211
+ var cell2Left = sh.getRange(r, c - 2);
212
+
213
+ Logger.log(cell2Left);
214
+
215
+ // 変更のあったセルの値
216
+
217
+ var val = cell.getValue();
218
+
219
+ Logger.log(val);
220
+
221
+ // 変更のあったセルの左隣のセルの値
222
+
223
+ var val2 = cellLeft.getValue();
224
+
225
+ Logger.log(val2);
226
+
227
+ // 変更のあったセルの2つ左隣のセルの値
228
+
229
+ var val3 = cell2Left.getValue();
230
+
231
+ Logger.log(val3);
232
+
233
+ // 変更のあったセルが変更のあったセルの2つ左隣のセルの値よりも小さいか、変更のあったセルの左隣のセルの値が空白ではなく、変更のあったセルの値が変更のあったセルの左隣のセルの値よりも小さかった時に
234
+
235
+ if( ( ( ( val < val3 ) || ( val2 != "" ) ) && val2 > val ) ) {
236
+
237
+ Logger.log( ( ( val < val3 ) || ( val2 != "" ) && val2 > val ) );
238
+
239
+ // 変更のあったセルの有る行の下の行の2列目を選択
240
+
241
+ var rowRange = sh.getRange(r+1, 2);
242
+
243
+ // 変更のあったセルの有る行の下の行の3列目を選択
244
+
245
+ var rowRangeRight = sh.getRange(r+1, 3);
246
+
247
+ // 変更のあったセルに1を入力
248
+
249
+ cell.setValue(1) ;
250
+
251
+ // 変更のあったセルの有る行の下の行の2列目に0を入力
252
+
253
+ rowRange.setValue(0) ;
254
+
255
+ // 変更のあったセルの有る行の下の行の3列目に変更のあったセルの値を入力して右隣にアクティブセルを移動
256
+
257
+ rowRangeRight.setValue(val).offset(0, 1).activate();
258
+
259
+ }
260
+
261
+ }
262
+
263
+ ```

3

行間を整えた。

2018/03/29 03:50

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -17,6 +17,8 @@
17
17
  変更のあったセルの有る行の下の行の3列目に変更のあったセルの値を入力して
18
18
 
19
19
  右隣にアクティブセルを移動」
20
+
21
+
20
22
 
21
23
  ということがしたくて、スクリプトを書きました。
22
24
 

2

質問の経緯を追記。

2018/03/27 20:56

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
1
  [こちら](https://teratail.com/questions/118993)の質問の関連です。
2
+
3
+ 上記の質問で作ったスクリプトを強化しようと思いました。
4
+
5
+ そこで、
2
6
 
3
7
 
4
8
 

1

どの質問の関連かを明記した。

2018/03/27 20:55

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ [こちら](https://teratail.com/questions/118993)の質問の関連です。
2
+
3
+
4
+
1
5
  「変更のあったセルの左隣のセルが空白ではなく、
2
6
 
3
7
  変更のあったセルの値が変更のあったセルの左隣のセルの値よりも小さかった時に、