質問編集履歴
5
微修正
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
解決後のまとめを追記した。
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
行間を整えた。
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
質問の経緯を追記。
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
どの質問の関連かを明記した。
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
|
変更のあったセルの値が変更のあったセルの左隣のセルの値よりも小さかった時に、
|