質問するログイン新規登録

質問編集履歴

6

追記5部分を微修正。

2018/05/12 16:18

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -219,12 +219,12 @@
219
219
  日付が変わったら、hour部分が0になって、00:00AMという表記になると思うじゃろ。
220
220
  それがなぜか、IFTTTのCreatedAtを使って取得した文字列は12:00AMとなるようなので(※)、
221
221
  スクリプトのhour部分に「.replace("12", "0")」を足すことで、
222
- 日付が変われば00:00AMとなるようにしました。
222
+ 日付が変われば24時間制表記の「00:00」となるようにしました。
223
223
  (※:調べてみると、英米式の12時間制表記はそういうものらしいですね。)
224
224
 
225
225
  正午にどのような反応をするかは未確認ながら、おそらく12:00PMとなるはずなので、
226
226
  hourの12を0に置き換えて、PMなのでhourに12が足されるスクリプトが働き、
227
- 結果、24時間制の「12:00」を得ることができるはず。
227
+ 結果、24時間制表記の「12:00」を得ることができるはず。
228
228
 
229
229
  ```javaScript
230
230
  function DateConverter(str) {

5

追記5を追記。

2018/05/12 16:18

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -213,4 +213,62 @@
213
213
  case "December" : return 12;
214
214
  }
215
215
  }
216
+ ```
217
+
218
+ ### 追記5【微調整】(2018/05/13 0:57)
219
+ 日付が変わったら、hour部分が0になって、00:00AMという表記になると思うじゃろ。
220
+ それがなぜか、IFTTTのCreatedAtを使って取得した文字列は12:00AMとなるようなので(※)、
221
+ スクリプトのhour部分に「.replace("12", "0")」を足すことで、
222
+ 日付が変われば00:00AMとなるようにしました。
223
+ (※:調べてみると、英米式の12時間制表記はそういうものらしいですね。)
224
+
225
+ 正午にどのような反応をするかは未確認ながら、おそらく12:00PMとなるはずなので、
226
+ hourの12を0に置き換えて、PMなのでhourに12が足されるスクリプトが働き、
227
+ 結果、24時間制の「12:00」を得ることができるはず。
228
+
229
+ ```javaScript
230
+ function DateConverter(str) {
231
+ var year = str.split(" ")[2];
232
+ Logger.log(year);
233
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
234
+ Logger.log(month);
235
+ var day = str.replace(",", "").split(" ")[1];
236
+ Logger.log(day);
237
+ var hour_min_ampm = str.split(" ")[4];
238
+ Logger.log(hour_min_ampm);
239
+ var hour = hour_min_ampm.slice(0,2).replace("12", "0");
240
+ Logger.log(hour);
241
+ var min = hour_min_ampm.slice(3,5);
242
+ Logger.log(min);
243
+ var ampm = hour_min_ampm.slice(5,8);
244
+ Logger.log(ampm);
245
+ var date_AM = new Date(year, month, day, hour, min);
246
+ Logger.log(date_AM);
247
+ var hour_PM = date_AM.getHours()+12;
248
+ Logger.log(hour_PM);
249
+ if(ampm=="AM"){
250
+ return date_AM;
251
+ }
252
+ else{
253
+ var date_PM = new Date(year, month, day, hour_PM, min);
254
+ Logger.log(date_PM);
255
+ return date_PM;
256
+ }
257
+ }
258
+ function MonthNameToNumber(shortname) {
259
+ switch(shortname) {
260
+ case "January" : return 1;
261
+ case "February" : return 2;
262
+ case "March" : return 3;
263
+ case "April" : return 4;
264
+ case "May" : return 5;
265
+ case "June" : return 6;
266
+ case "July" : return 7;
267
+ case "August" : return 8;
268
+ case "September" : return 9;
269
+ case "October" : return 10;
270
+ case "November" : return 11;
271
+ case "December" : return 12;
272
+ }
273
+ }
216
274
  ```

4

追記4の加筆。

2018/05/12 16:14

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -160,4 +160,57 @@
160
160
  case "December" : return 12;
161
161
  }
162
162
  }
163
+ ```
164
+
165
+ ### 追記4【スクリプト完成】(2018/05/08 20:34)
166
+ IFTTT側にて「=DateConverter({{CreatedAt}})」と設定すると、
167
+ {{CreatedAt}}部分が数字として認識されるようなので、
168
+ 「=DateConverter(“{{CreatedAt}}”)」とダブルクオーテーションで囲ったところ、
169
+ 期待通りの結果を得ることができました!
170
+
171
+ ```javaScript
172
+ function DateConverter(str) {
173
+ var year = str.split(" ")[2];
174
+ Logger.log(year);
175
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
176
+ Logger.log(month);
177
+ var day = str.replace(",", "").split(" ")[1];
178
+ Logger.log(day);
179
+ var hour_min_ampm = str.split(" ")[4];
180
+ Logger.log(hour_min_ampm);
181
+ var hour = hour_min_ampm.slice(0,2);
182
+ Logger.log(hour);
183
+ var min = hour_min_ampm.slice(3,5);
184
+ Logger.log(min);
185
+ var ampm = hour_min_ampm.slice(5,8);
186
+ Logger.log(ampm);
187
+ var date_AM = new Date(year, month, day, hour, min);
188
+ Logger.log(date_AM);
189
+ var hour_PM = date_AM.getHours()+12;
190
+ Logger.log(hour_PM);
191
+ if(ampm=="AM"){
192
+ return date_AM;
193
+ }
194
+ else{
195
+ var date_PM = new Date(year, month, day, hour_PM, min);
196
+ Logger.log(date_PM);
197
+ return date_PM;
198
+ }
199
+ }
200
+ function MonthNameToNumber(shortname) {
201
+ switch(shortname) {
202
+ case "January" : return 1;
203
+ case "February" : return 2;
204
+ case "March" : return 3;
205
+ case "April" : return 4;
206
+ case "May" : return 5;
207
+ case "June" : return 6;
208
+ case "July" : return 7;
209
+ case "August" : return 8;
210
+ case "September" : return 9;
211
+ case "October" : return 10;
212
+ case "November" : return 11;
213
+ case "December" : return 12;
214
+ }
215
+ }
163
216
  ```

3

追記3を加筆。

2018/05/08 11:57

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -96,4 +96,68 @@
96
96
  case "December" : return 12;
97
97
  }
98
98
  }
99
+ ```
100
+
101
+ ### 追記3(2018/05/08 19:49)
102
+ ```javaScript
103
+ function DateConverter() {
104
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
105
+
106
+ // シート「生ログ」関連
107
+ var sheet = spreadsheet.getSheetByName('生ログ');
108
+ var lastRow = sheet.getLastRow();
109
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
110
+ Logger.log(lastRow_val);
111
+
112
+ // シート「日付成形」関連
113
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
114
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
115
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
116
+
117
+ var str = lastRow_val;
118
+ Logger.log(str);
119
+
120
+ var year = str.split(" ")[2];
121
+ Logger.log(year);
122
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
123
+ Logger.log(month);
124
+ var day = str.replace(",", "").split(" ")[1];
125
+ Logger.log(day);
126
+ var hour_min_ampm = str.split(" ")[4];
127
+ Logger.log(hour_min_ampm);
128
+ var hour = hour_min_ampm.slice(0,2);
129
+ Logger.log(hour);
130
+ var min = hour_min_ampm.slice(3,5);
131
+ Logger.log(min);
132
+ var ampm = hour_min_ampm.slice(5,8);
133
+ Logger.log(ampm);
134
+ var date_AM = new Date(year, month, day, hour, min);
135
+ Logger.log(date_AM);
136
+ var hour_PM = date_AM.getHours()+12;
137
+ Logger.log(hour_PM);
138
+ if(ampm=="AM"){
139
+ lastRow_hiduke_range.setValue(date_AM);
140
+ }
141
+ else{
142
+ var date_PM = new Date(year, month, day, hour_PM, min);
143
+ Logger.log(date_PM);
144
+ lastRow_hiduke_range.setValue(date_PM);
145
+ }
146
+ }
147
+ function MonthNameToNumber(shortname) {
148
+ switch(shortname) {
149
+ case "January" : return 1;
150
+ case "February" : return 2;
151
+ case "March" : return 3;
152
+ case "April" : return 4;
153
+ case "May" : return 5;
154
+ case "June" : return 6;
155
+ case "July" : return 7;
156
+ case "August" : return 8;
157
+ case "September" : return 9;
158
+ case "October" : return 10;
159
+ case "November" : return 11;
160
+ case "December" : return 12;
161
+ }
162
+ }
99
163
  ```

2

追記2の加筆。

2018/05/08 10:50

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -41,4 +41,59 @@
41
41
  }
42
42
  }
43
43
  }
44
+ ```
45
+
46
+ ### 追記2(2018/05/08 19:02)
47
+ ```javaScript
48
+ function DateConverter() {
49
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
50
+
51
+ // シート「生ログ」関連
52
+ var sheet = spreadsheet.getSheetByName('生ログ');
53
+ var lastRow = sheet.getLastRow();
54
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
55
+ Logger.log(lastRow_val);
56
+
57
+ // シート「日付成形」関連
58
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
59
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
60
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
61
+
62
+ var str = lastRow_val;
63
+ Logger.log(str);
64
+
65
+ var year = str.split(" ")[2];
66
+ Logger.log(year);
67
+ var month = MonthNameToNumber(str.split(" ")[0]) - 1;//Dateを作るとき月は0はじまり
68
+ Logger.log(month);
69
+ var day = str.replace(",", "").split(" ")[1];
70
+ Logger.log(day);
71
+ var hour_min_ampm = str.split(" ")[4];
72
+ Logger.log(hour_min_ampm);
73
+ var hour = hour_min_ampm.slice(0,2);
74
+ Logger.log(hour);
75
+ var min = hour_min_ampm.slice(3,5);
76
+ Logger.log(min);
77
+ var ampm = hour_min_ampm.slice(5,8);
78
+ Logger.log(ampm);
79
+ var date = new Date(year, month, day, hour, min);
80
+ Logger.log(date);
81
+ lastRow_hiduke_range.setValue(date);
82
+ }
83
+ function MonthNameToNumber(shortname) {
84
+ switch(shortname) {
85
+ case "January" : return 1;
86
+ case "February" : return 2;
87
+ case "March" : return 3;
88
+ case "April" : return 4;
89
+ case "May" : return 5;
90
+ case "June" : return 6;
91
+ case "July" : return 7;
92
+ case "August" : return 8;
93
+ case "September" : return 9;
94
+ case "October" : return 10;
95
+ case "November" : return 11;
96
+ case "December" : return 12;
97
+ }
98
+ }
44
99
  ```

1

追記の加筆。

2018/05/08 10:03

投稿

koromo_t
koromo_t

スコア60

title CHANGED
File without changes
body CHANGED
@@ -4,4 +4,41 @@
4
4
  方針としては、どのようにすればよいでしょうか。
5
5
  「May 05, 2018 at 11:57PM」は文字列として認識されているようなので、
6
6
  スプレッドシートのツールバー?の「123」と書かれたボタンからは、
7
- 表記の変更はできないようです。
7
+ 表記の変更はできないようです。
8
+
9
+
10
+ ### 追記(2018/05/07 23:12)
11
+ papinianusさんの回答を参考に、ちょっと書いてみたスクリプトです!
12
+ じわじわとゴールへ向かっている感が…♪
13
+
14
+ ```javaScript
15
+ function myFunction() {
16
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
17
+ var sheet = spreadsheet.getSheetByName('生ログ');
18
+ var sheet_hiduke = spreadsheet.getSheetByName('日付成形');
19
+
20
+ // シート「生ログ」関連
21
+ var lastRow = sheet.getLastRow();
22
+ var lastRow_range = sheet.getRange(lastRow,1);
23
+ var lastRow_val = sheet.getRange(lastRow,1).getValue();
24
+ Logger.log(lastRow_val);
25
+
26
+ // シート「日付成形」関連
27
+ var lastRow_hiduke = sheet_hiduke.getLastRow();
28
+ var lastRow_hiduke_range = sheet_hiduke.getRange(lastRow_hiduke,1); // ←ここに日付を書き込みたい。
29
+
30
+ var str = lastRow_val;
31
+ Logger.log(str);
32
+
33
+ // 日付を抽出
34
+ var parse = str.replace(",", "").split(" ");
35
+ return new Date(parse[2], ToMonth(parse[0]), parse[1]);
36
+
37
+ function ToMonth(str) {
38
+ switch(str)
39
+ {
40
+ case "May": return 4;
41
+ }
42
+ }
43
+ }
44
+ ```