質問編集履歴

3

構成をちょっと変更。

2018/04/05 01:11

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -204,6 +204,10 @@
204
204
 
205
205
 
206
206
 
207
+ ---
208
+
209
+
210
+
207
211
  「変更されたシート名を取得すること」、ここがネックだったのですね。
208
212
 
209
213
  そして、switch文というものに、今回初めて出会いました。条件分岐というのですね。
@@ -212,10 +216,6 @@
212
216
 
213
217
 
214
218
 
215
- ---
216
-
217
-
218
-
219
219
  ```javaScript
220
220
 
221
221
  function onEdit(e){

2

解決後のまとめを追記。

2018/04/05 01:11

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -193,3 +193,219 @@
193
193
  }
194
194
 
195
195
  ```
196
+
197
+
198
+
199
+
200
+
201
+ #**~解決後のまとめ~**
202
+
203
+ mix-peachさんの回答を参考に解決しましたので、まとめておきます!
204
+
205
+
206
+
207
+ 「変更されたシート名を取得すること」、ここがネックだったのですね。
208
+
209
+ そして、switch文というものに、今回初めて出会いました。条件分岐というのですね。
210
+
211
+ 構造も、知ってしまえばわかりやすくてよいですね! 学習しました。
212
+
213
+
214
+
215
+ ---
216
+
217
+
218
+
219
+ ```javaScript
220
+
221
+ function onEdit(e){
222
+
223
+
224
+
225
+ //今変更されたシート名を取得 (どう取得できるかはお調べください^^;)
226
+
227
+ var edit_sheet_name = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetName();
228
+
229
+ Logger.log(edit_sheet_name);
230
+
231
+
232
+
233
+ switch (edit_sheet_name){
234
+
235
+ case '歩数計':
236
+
237
+ onEdit1();
238
+
239
+ break;
240
+
241
+
242
+
243
+ case '睡眠記録':
244
+
245
+ onEdit2();
246
+
247
+ break;
248
+
249
+
250
+
251
+ case '10食品群':
252
+
253
+ onEdit3();
254
+
255
+ break;
256
+
257
+ }
258
+
259
+ }
260
+
261
+
262
+
263
+ // シートに変更があった時に実行する関数
264
+
265
+ function onEdit1() {
266
+
267
+ // 変更のあったシート
268
+
269
+ var ss = SpreadsheetApp.getActive().getSheetByName("歩数計");
270
+
271
+ // 変更のあったセル
272
+
273
+ var cell = ss.getActiveRange();
274
+
275
+ // 変更のあったセルの値
276
+
277
+ var val = cell.getValue();
278
+
279
+ // 変更のあったセルの文字列がnだった時に
280
+
281
+ if( ( val == "n" ) ) {
282
+
283
+ cell.setValue("バンザイなし") ;
284
+
285
+ }
286
+
287
+ // 変更のあったセルの文字列がaだった時に
288
+
289
+ if( ( val == "a" ) ) {
290
+
291
+ cell.setValue("バンザイあり") ;
292
+
293
+ }
294
+
295
+ }
296
+
297
+
298
+
299
+ function onEdit2() {
300
+
301
+ // 変更のあったシート
302
+
303
+ var ss = SpreadsheetApp.getActive().getSheetByName("睡眠記録");
304
+
305
+ // 変更のあったセル
306
+
307
+ var cell = ss.getActiveRange();
308
+
309
+ Logger.log(cell);
310
+
311
+ // 変更のあったセルの有る行番号
312
+
313
+ var r = cell.getRow();
314
+
315
+ Logger.log(r);
316
+
317
+ // 変更のあったセルの有る列番号
318
+
319
+ var c = cell.getColumn();
320
+
321
+ Logger.log(c);
322
+
323
+ // 変更のあったセルの左隣のセル
324
+
325
+ var cellLeft = ss.getRange(r, c - 1);
326
+
327
+ Logger.log(cellLeft);
328
+
329
+ // 変更のあったセルの2つ左隣のセル
330
+
331
+ var cell2Left = ss.getRange(r, c - 2);
332
+
333
+ Logger.log(cell2Left);
334
+
335
+ // 変更のあったセルの値
336
+
337
+ var val = cell.getValue();
338
+
339
+ Logger.log(val);
340
+
341
+ // 変更のあったセルの左隣のセルの値
342
+
343
+ var val2 = cellLeft.getValue();
344
+
345
+ Logger.log(val2);
346
+
347
+ // 変更のあったセルの2つ左隣のセルの値
348
+
349
+ var val3 = cell2Left.getValue();
350
+
351
+ Logger.log(val3);
352
+
353
+ // 変更のあったセルが変更のあったセルの2つ左隣のセルの値よりも小さいか、変更のあったセルの左隣のセルの値が空白ではなく、変更のあったセルの値が変更のあったセルの左隣のセルの値よりも小さかった時に
354
+
355
+ if( ( ( ( val < val3 ) || ( val2 != "" ) ) && val2 > val ) ) {
356
+
357
+ Logger.log( ( ( val < val3 ) || ( val2 != "" ) && val2 > val ) );
358
+
359
+ // 変更のあったセルの有る行の下の行の2列目を選択
360
+
361
+ var rowRange = ss.getRange(r+1, 2);
362
+
363
+ // 変更のあったセルの有る行の下の行の3列目を選択
364
+
365
+ var rowRangeRight = ss.getRange(r+1, 3);
366
+
367
+ // 変更のあったセルに1を入力
368
+
369
+ cell.setValue(1) ;
370
+
371
+ // 変更のあったセルの有る行の下の行の2列目に0を入力
372
+
373
+ rowRange.setValue(0) ;
374
+
375
+ // 変更のあったセルの有る行の下の行の3列目に変更のあったセルの値を入力して右隣にアクティブセルを移動
376
+
377
+ rowRangeRight.setValue(val).offset(0, 1).activate();
378
+
379
+ }
380
+
381
+ }
382
+
383
+
384
+
385
+ // シートに変更があった時に実行する関数
386
+
387
+ function onEdit3() {
388
+
389
+ // 変更のあったシート
390
+
391
+ var ss = SpreadsheetApp.getActive().getSheetByName("10食品群");
392
+
393
+ // 変更のあったセル
394
+
395
+ var cell = ss.getActiveRange();
396
+
397
+ // 変更のあったセルの値
398
+
399
+ var val = cell.getValue();
400
+
401
+ // 変更のあったセルの文字列がnだった時に
402
+
403
+ if( ( val == "m" ) ) {
404
+
405
+ cell.setValue("○") ;
406
+
407
+ }
408
+
409
+ }
410
+
411
+ ```

1

行間を整える。

2018/04/05 01:10

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
1
  下記のようなスクリプトを書きました。
2
+
3
+
2
4
 
3
5
  下記のスクリプトにおいて、
4
6