質問編集履歴

6

追記5部分を微修正。

2018/05/12 16:18

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -440,7 +440,7 @@
440
440
 
441
441
  スクリプトのhour部分に「.replace("12", "0")」を足すことで、
442
442
 
443
- 日付が変われば00:00AMとなるようにしました。
443
+ 日付が変われば24時間制表記の「00:00となるようにしました。
444
444
 
445
445
  (※:調べてみると、英米式の12時間制表記はそういうものらしいですね。)
446
446
 
@@ -450,7 +450,7 @@
450
450
 
451
451
  hourの12を0に置き換えて、PMなのでhourに12が足されるスクリプトが働き、
452
452
 
453
- 結果、24時間制の「12:00」を得ることができるはず。
453
+ 結果、24時間制表記の「12:00」を得ることができるはず。
454
454
 
455
455
 
456
456
 

5

追記5を追記。

2018/05/12 16:18

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -429,3 +429,119 @@
429
429
  }
430
430
 
431
431
  ```
432
+
433
+
434
+
435
+ ### 追記5【微調整】(2018/05/13 0:57)
436
+
437
+ 日付が変わったら、hour部分が0になって、00:00AMという表記になると思うじゃろ。
438
+
439
+ それがなぜか、IFTTTのCreatedAtを使って取得した文字列は12:00AMとなるようなので(※)、
440
+
441
+ スクリプトのhour部分に「.replace("12", "0")」を足すことで、
442
+
443
+ 日付が変われば00:00AMとなるようにしました。
444
+
445
+ (※:調べてみると、英米式の12時間制表記はそういうものらしいですね。)
446
+
447
+
448
+
449
+ 正午にどのような反応をするかは未確認ながら、おそらく12:00PMとなるはずなので、
450
+
451
+ hourの12を0に置き換えて、PMなのでhourに12が足されるスクリプトが働き、
452
+
453
+ 結果、24時間制の「12:00」を得ることができるはず。
454
+
455
+
456
+
457
+ ```javaScript
458
+
459
+ function DateConverter(str) {
460
+
461
+ var year = str.split(" ")[2];
462
+
463
+ Logger.log(year);
464
+
465
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
466
+
467
+ Logger.log(month);
468
+
469
+ var day = str.replace(",", "").split(" ")[1];
470
+
471
+ Logger.log(day);
472
+
473
+ var hour_min_ampm = str.split(" ")[4];
474
+
475
+ Logger.log(hour_min_ampm);
476
+
477
+ var hour = hour_min_ampm.slice(0,2).replace("12", "0");
478
+
479
+ Logger.log(hour);
480
+
481
+ var min = hour_min_ampm.slice(3,5);
482
+
483
+ Logger.log(min);
484
+
485
+ var ampm = hour_min_ampm.slice(5,8);
486
+
487
+ Logger.log(ampm);
488
+
489
+ var date_AM = new Date(year, month, day, hour, min);
490
+
491
+ Logger.log(date_AM);
492
+
493
+ var hour_PM = date_AM.getHours()+12;
494
+
495
+ Logger.log(hour_PM);
496
+
497
+ if(ampm=="AM"){
498
+
499
+ return date_AM;
500
+
501
+ }
502
+
503
+ else{
504
+
505
+ var date_PM = new Date(year, month, day, hour_PM, min);
506
+
507
+ Logger.log(date_PM);
508
+
509
+ return date_PM;
510
+
511
+ }
512
+
513
+ }
514
+
515
+ function MonthNameToNumber(shortname) {
516
+
517
+ switch(shortname) {
518
+
519
+ case "January" : return 1;
520
+
521
+ case "February" : return 2;
522
+
523
+ case "March" : return 3;
524
+
525
+ case "April" : return 4;
526
+
527
+ case "May" : return 5;
528
+
529
+ case "June" : return 6;
530
+
531
+ case "July" : return 7;
532
+
533
+ case "August" : return 8;
534
+
535
+ case "September" : return 9;
536
+
537
+ case "October" : return 10;
538
+
539
+ case "November" : return 11;
540
+
541
+ case "December" : return 12;
542
+
543
+ }
544
+
545
+ }
546
+
547
+ ```

4

追記4の加筆。

2018/05/12 16:14

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -323,3 +323,109 @@
323
323
  }
324
324
 
325
325
  ```
326
+
327
+
328
+
329
+ ### 追記4【スクリプト完成】(2018/05/08 20:34)
330
+
331
+ IFTTT側にて「=DateConverter({{CreatedAt}})」と設定すると、
332
+
333
+ {{CreatedAt}}部分が数字として認識されるようなので、
334
+
335
+ 「=DateConverter(“{{CreatedAt}}”)」とダブルクオーテーションで囲ったところ、
336
+
337
+ 期待通りの結果を得ることができました!
338
+
339
+
340
+
341
+ ```javaScript
342
+
343
+ function DateConverter(str) {
344
+
345
+ var year = str.split(" ")[2];
346
+
347
+ Logger.log(year);
348
+
349
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
350
+
351
+ Logger.log(month);
352
+
353
+ var day = str.replace(",", "").split(" ")[1];
354
+
355
+ Logger.log(day);
356
+
357
+ var hour_min_ampm = str.split(" ")[4];
358
+
359
+ Logger.log(hour_min_ampm);
360
+
361
+ var hour = hour_min_ampm.slice(0,2);
362
+
363
+ Logger.log(hour);
364
+
365
+ var min = hour_min_ampm.slice(3,5);
366
+
367
+ Logger.log(min);
368
+
369
+ var ampm = hour_min_ampm.slice(5,8);
370
+
371
+ Logger.log(ampm);
372
+
373
+ var date_AM = new Date(year, month, day, hour, min);
374
+
375
+ Logger.log(date_AM);
376
+
377
+ var hour_PM = date_AM.getHours()+12;
378
+
379
+ Logger.log(hour_PM);
380
+
381
+ if(ampm=="AM"){
382
+
383
+ return date_AM;
384
+
385
+ }
386
+
387
+ else{
388
+
389
+ var date_PM = new Date(year, month, day, hour_PM, min);
390
+
391
+ Logger.log(date_PM);
392
+
393
+ return date_PM;
394
+
395
+ }
396
+
397
+ }
398
+
399
+ function MonthNameToNumber(shortname) {
400
+
401
+ switch(shortname) {
402
+
403
+ case "January" : return 1;
404
+
405
+ case "February" : return 2;
406
+
407
+ case "March" : return 3;
408
+
409
+ case "April" : return 4;
410
+
411
+ case "May" : return 5;
412
+
413
+ case "June" : return 6;
414
+
415
+ case "July" : return 7;
416
+
417
+ case "August" : return 8;
418
+
419
+ case "September" : return 9;
420
+
421
+ case "October" : return 10;
422
+
423
+ case "November" : return 11;
424
+
425
+ case "December" : return 12;
426
+
427
+ }
428
+
429
+ }
430
+
431
+ ```

3

追記3を加筆。

2018/05/08 11:57

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -195,3 +195,131 @@
195
195
  }
196
196
 
197
197
  ```
198
+
199
+
200
+
201
+ ### 追記3(2018/05/08 19:49)
202
+
203
+ ```javaScript
204
+
205
+ function DateConverter() {
206
+
207
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
208
+
209
+
210
+
211
+ // シート「生ログ」関連
212
+
213
+ var sheet = spreadsheet.getSheetByName('生ログ');
214
+
215
+ var lastRow = sheet.getLastRow();
216
+
217
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
218
+
219
+ Logger.log(lastRow_val);
220
+
221
+
222
+
223
+ // シート「日付成形」関連
224
+
225
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
226
+
227
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
228
+
229
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
230
+
231
+
232
+
233
+ var str = lastRow_val;
234
+
235
+ Logger.log(str);
236
+
237
+
238
+
239
+ var year = str.split(" ")[2];
240
+
241
+ Logger.log(year);
242
+
243
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
244
+
245
+ Logger.log(month);
246
+
247
+ var day = str.replace(",", "").split(" ")[1];
248
+
249
+ Logger.log(day);
250
+
251
+ var hour_min_ampm = str.split(" ")[4];
252
+
253
+ Logger.log(hour_min_ampm);
254
+
255
+ var hour = hour_min_ampm.slice(0,2);
256
+
257
+ Logger.log(hour);
258
+
259
+ var min = hour_min_ampm.slice(3,5);
260
+
261
+ Logger.log(min);
262
+
263
+ var ampm = hour_min_ampm.slice(5,8);
264
+
265
+ Logger.log(ampm);
266
+
267
+ var date_AM = new Date(year, month, day, hour, min);
268
+
269
+ Logger.log(date_AM);
270
+
271
+ var hour_PM = date_AM.getHours()+12;
272
+
273
+ Logger.log(hour_PM);
274
+
275
+ if(ampm=="AM"){
276
+
277
+ lastRow_hiduke_range.setValue(date_AM);
278
+
279
+ }
280
+
281
+ else{
282
+
283
+ var date_PM = new Date(year, month, day, hour_PM, min);
284
+
285
+ Logger.log(date_PM);
286
+
287
+ lastRow_hiduke_range.setValue(date_PM);
288
+
289
+ }
290
+
291
+ }
292
+
293
+ function MonthNameToNumber(shortname) {
294
+
295
+ switch(shortname) {
296
+
297
+ case "January" : return 1;
298
+
299
+ case "February" : return 2;
300
+
301
+ case "March" : return 3;
302
+
303
+ case "April" : return 4;
304
+
305
+ case "May" : return 5;
306
+
307
+ case "June" : return 6;
308
+
309
+ case "July" : return 7;
310
+
311
+ case "August" : return 8;
312
+
313
+ case "September" : return 9;
314
+
315
+ case "October" : return 10;
316
+
317
+ case "November" : return 11;
318
+
319
+ case "December" : return 12;
320
+
321
+ }
322
+
323
+ }
324
+
325
+ ```

2

追記2の加筆。

2018/05/08 10:50

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,113 @@
85
85
  }
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ ### 追記2(2018/05/08 19:02)
92
+
93
+ ```javaScript
94
+
95
+ function DateConverter() {
96
+
97
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
98
+
99
+
100
+
101
+ // シート「生ログ」関連
102
+
103
+ var sheet = spreadsheet.getSheetByName('生ログ');
104
+
105
+ var lastRow = sheet.getLastRow();
106
+
107
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
108
+
109
+ Logger.log(lastRow_val);
110
+
111
+
112
+
113
+ // シート「日付成形」関連
114
+
115
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
116
+
117
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
118
+
119
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
120
+
121
+
122
+
123
+ var str = lastRow_val;
124
+
125
+ Logger.log(str);
126
+
127
+
128
+
129
+ var year = str.split(" ")[2];
130
+
131
+ Logger.log(year);
132
+
133
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
134
+
135
+ Logger.log(month);
136
+
137
+ var day = str.replace(",", "").split(" ")[1];
138
+
139
+ Logger.log(day);
140
+
141
+ var hour_min_ampm = str.split(" ")[4];
142
+
143
+ Logger.log(hour_min_ampm);
144
+
145
+ var hour = hour_min_ampm.slice(0,2);
146
+
147
+ Logger.log(hour);
148
+
149
+ var min = hour_min_ampm.slice(3,5);
150
+
151
+ Logger.log(min);
152
+
153
+ var ampm = hour_min_ampm.slice(5,8);
154
+
155
+ Logger.log(ampm);
156
+
157
+ var date = new Date(year, month, day, hour, min);
158
+
159
+ Logger.log(date);
160
+
161
+ lastRow_hiduke_range.setValue(date);
162
+
163
+ }
164
+
165
+ function MonthNameToNumber(shortname) {
166
+
167
+ switch(shortname) {
168
+
169
+ case "January" : return 1;
170
+
171
+ case "February" : return 2;
172
+
173
+ case "March" : return 3;
174
+
175
+ case "April" : return 4;
176
+
177
+ case "May" : return 5;
178
+
179
+ case "June" : return 6;
180
+
181
+ case "July" : return 7;
182
+
183
+ case "August" : return 8;
184
+
185
+ case "September" : return 9;
186
+
187
+ case "October" : return 10;
188
+
189
+ case "November" : return 11;
190
+
191
+ case "December" : return 12;
192
+
193
+ }
194
+
195
+ }
196
+
197
+ ```

1

追記の加筆。

2018/05/08 10:03

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,77 @@
11
11
  スプレッドシートのツールバー?の「123」と書かれたボタンからは、
12
12
 
13
13
  表記の変更はできないようです。
14
+
15
+
16
+
17
+
18
+
19
+ ### 追記(2018/05/07 23:12)
20
+
21
+ papinianusさんの回答を参考に、ちょっと書いてみたスクリプトです!
22
+
23
+ じわじわとゴールへ向かっている感が…♪
24
+
25
+
26
+
27
+ ```javaScript
28
+
29
+ function myFunction() {
30
+
31
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
32
+
33
+ var sheet = spreadsheet.getSheetByName('生ログ');
34
+
35
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
36
+
37
+
38
+
39
+ // シート「生ログ」関連
40
+
41
+ var lastRow = sheet.getLastRow();
42
+
43
+ var lastRow_range = sheet.getRange(lastRow,1);
44
+
45
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
46
+
47
+ Logger.log(lastRow_val);
48
+
49
+
50
+
51
+ // シート「日付成形」関連
52
+
53
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
54
+
55
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
56
+
57
+
58
+
59
+ var str = lastRow_val;
60
+
61
+ Logger.log(str);
62
+
63
+
64
+
65
+ // 日付を抽出
66
+
67
+ var parse = str.replace(",", "").split(" ");
68
+
69
+ return new Date(parse[2], ToMonth(parse[0]), parse[1]);
70
+
71
+
72
+
73
+ function ToMonth(str) {
74
+
75
+ switch(str)
76
+
77
+ {
78
+
79
+ case "May": return 4;
80
+
81
+ }
82
+
83
+ }
84
+
85
+ }
86
+
87
+ ```