質問編集履歴

4

一部文言訂正

2020/05/11 01:23

投稿

Cha_mi
Cha_mi

スコア2

test CHANGED
File without changes
test CHANGED
@@ -226,7 +226,7 @@
226
226
 
227
227
  else if(body.match('【お問合せ内容】' + '[\s\S]*?' + '【知ったきっかけ】')){
228
228
 
229
- var regContents = new RegExp('【お問合せ内容】' + '[\s\S]*?' + '【タレントパレットを知ったきっかけ】');
229
+ var regContents = new RegExp('【お問合せ内容】' + '[\s\S]*?' + '【知ったきっかけ】');
230
230
 
231
231
  var Contents = body.match(regContents)[0].replace('【お問合せ内容】', '').replace('【知ったきっかけ】', '').replace('\n', '').replace('\r', '');
232
232
 

3

一部文言訂正

2020/05/11 01:23

投稿

Cha_mi
Cha_mi

スコア2

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  XXX
48
48
 
49
- 【タレントパレットを知ったきっかけ】
49
+
50
50
 
51
51
  【知ったきっかけ】
52
52
 

2

該当のソースコードを一部省略

2020/05/10 13:20

投稿

Cha_mi
Cha_mi

スコア2

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  TypeError: Cannot read property '0' of null(行 104、ファイル「コード」)
90
90
 
91
- がでます。※if文を除いた場合。
91
+ がでます。※if文を除いた場合。問合せフォームよとっては実際に【検討状況】の項目がないフォームもあります。
92
92
 
93
93
 
94
94
 
@@ -96,7 +96,11 @@
96
96
 
97
97
  上記のregBackgroundの対象を以下に変えた場合、スプレッドシートにはすべての行に
98
98
 
99
+ "直近で導入を検討している"が表示されてしまいます。
100
+
101
+ var regBackground = new RegExp('直近で導入を検討している');
102
+
99
- "直近で導入を検討している"が表示されてしまいます。おそらくスレッド内でどれかのメールに直近で導入を検討しているという文言があればそれを拾ってしまっています。
103
+ おそらくスレッド内でどれかのメールに"直近で導入を検討している"という文言があればそれを拾ってしまっています。
100
104
 
101
105
 
102
106
 
@@ -148,7 +152,7 @@
148
152
 
149
153
  var regDate = new RegExp('Date:' + '.*?' + '\r' );
150
154
 
151
- var Date = body.match(regDate)[0].replace('Date: ', '').replace('Date:', '');
155
+ var Date = body.match(regDate)[0].replace('Date: ', '');
152
156
 
153
157
  }
154
158
 
@@ -210,14 +214,6 @@
210
214
 
211
215
  }
212
216
 
213
- else if(body.match('【電話番号】' + '[\s\S]*?' + '【社員数】')){
214
-
215
- var regTel = new RegExp('【電話番号】' + '[\s\S]*?' + '【社員数】');
216
-
217
- var Tel = body.match(regTel)[0].replace('【電話番号】', '').replace('【社員数】', '').replace('\n', '').replace('\r', '');
218
-
219
- }
220
-
221
217
 
222
218
 
223
219
  if(body.match('【お問合せ内容】' + '[\s\S]*?' + '【デモンストレーション希望】')){
@@ -236,14 +232,6 @@
236
232
 
237
233
  }
238
234
 
239
- else if(body.match('【お問い合せ内容】' + '[\s\S]*?' + '【情報提供について】')){
240
-
241
- var regContents = new RegExp('【お問い合せ内容】' + '[\s\S]*?' + '【情報提供について】');
242
-
243
- var Contents = body.match(regContents)[0].replace('【お問い合せ内容】', '').replace('【情報提供について】', '').replace('\n', '').replace('\r', '');
244
-
245
- }
246
-
247
235
 
248
236
 
249
237
  if(body.match('【ご紹介方法】')){
@@ -262,14 +250,6 @@
262
250
 
263
251
  }
264
252
 
265
- else if(body.match('【情報提供について】')){
266
-
267
- var regDemo = new RegExp('【情報提供について】' + '[\s\S]*?' + '【タレントパレットを知ったきっかけ】');
268
-
269
- var Demo = body.match(regDemo)[0].replace('【情報提供について】', '').replace('【知ったきっかけ】', '').replace('\n', '').replace('\r', '');
270
-
271
- }
272
-
273
253
 
274
254
 
275
255
  if(body.match('【知ったきっかけ】')){
@@ -318,11 +298,13 @@
318
298
 
319
299
 
320
300
 
301
+ if(body.match('【検討状況】')){
302
+
321
303
  var regBackground = new RegExp('【検討状況】' + '[\s\S]*?');
322
304
 
323
305
  var Background = body.match(regBackground)[0].replace('【検討状況】', '').replace('\n', '');
324
306
 
325
-
307
+ }
326
308
 
327
309
 
328
310
 

1

説明追加

2020/05/10 12:08

投稿

Cha_mi
Cha_mi

スコア2

test CHANGED
File without changes
test CHANGED
@@ -3,3 +3,353 @@
3
3
  Gmailに送られてくるこれらのお問合せのメールを、GASを用い、スプレッドシートに自動で転載できるようにできれば少しでも後輩の仕事が減ると思い、GASの勉強をし始めました。
4
4
 
5
5
  以前こちらで質問をさせていただき教えていただいた内容等をもとに、無事ほぼ完成したのですが、一点だけうまくいかず。。。再度質問させていただきます。
6
+
7
+ 反映したい問合せメールはパターンが複数ありますが、おおむね以下の通りです。
8
+
9
+ ーーーーーーーーーーーーーーーーーーーーーーー
10
+
11
+ 件名:【資料請求申し込み】
12
+
13
+ 本文:
14
+
15
+ 下記のお問い合わせがありました。
16
+
17
+ 【会社名】
18
+
19
+ XXXXXXX株式会社
20
+
21
+ 【部署名】
22
+
23
+ XXX部
24
+
25
+ 【氏名】
26
+
27
+ XXX XXX
28
+
29
+ 【メールアドレス】
30
+
31
+ XXXXXXXXXXXX@XXXXXXXXX
32
+
33
+ 【電話番号】
34
+
35
+ XXXXXXXXXXXX
36
+
37
+ 【お問合せ内容】
38
+
39
+ XXXXXXXXX
40
+
41
+ yyyyyyyyy
42
+
43
+
44
+
45
+ 【デモンストレーション希望】
46
+
47
+ XXX
48
+
49
+ 【タレントパレットを知ったきっかけ】
50
+
51
+ 【知ったきっかけ】
52
+
53
+ XXX
54
+
55
+ 【関心のあるテーマ】
56
+
57
+ XXX,yyy,ccc
58
+
59
+ 【社員数】
60
+
61
+ 1000名以上~
62
+
63
+ 【検討状況】
64
+
65
+ 直近で導入を検討している←今回ここが反映されません。空欄または"直近で導入を検討している"の2パターンです。
66
+
67
+
68
+
69
+ ーーーーーーーーーーーーーーーーーーーーーーー
70
+
71
+ 上記のメールをA~M列に以下のようにデータを反映したいです。
72
+
73
+ 日付 件名 会社名 部署 。。。。。検討状況
74
+
75
+
76
+
77
+ 最後の【検討状況】のみエラーがでてしまいます。
78
+
79
+ エラー内容としては以下の文言がでます。
80
+
81
+
82
+
83
+ ●エラーパターン1:
84
+
85
+ var regBackground = new RegExp('【検討状況】' + '[\s\S]*?');
86
+
87
+ 上記において
88
+
89
+ TypeError: Cannot read property '0' of null(行 104、ファイル「コード」)
90
+
91
+ がでます。※if文を除いた場合。
92
+
93
+
94
+
95
+ ●エラーパターン2:
96
+
97
+ 上記のregBackgroundの対象を以下に変えた場合、スプレッドシートにはすべての行に
98
+
99
+ "直近で導入を検討している"が表示されてしまいます。おそらくスレッド内でどれかのメールに直近で導入を検討しているという文言があればそれを拾ってしまっています。
100
+
101
+
102
+
103
+ ●改善したいこと
104
+
105
+ 【検討状況】
106
+
107
+ 直近で導入を検討している←これをうまく反映させたいです。
108
+
109
+ 直近で導入を検討していると答えている内容のメールは確かに存在しているので、エラーパターン1のようにnullになることはあり得ません。
110
+
111
+
112
+
113
+ ### 該当のソースコード
114
+
115
+ ```GAS
116
+
117
+ function RegExpForm() {
118
+
119
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
120
+
121
+ var sheet = ss.getSheetByName('問合せ転記');
122
+
123
+ var thds = GmailApp.search('from:"xxxx@gmail.com" newer_than:1d');
124
+
125
+ var messe = GmailApp.getMessagesForThreads(thds);
126
+
127
+ const lastRow = sheet.getLastRow();
128
+
129
+ const ids = sheet.getRange(2, 21, lastRow).getValues().flat();
130
+
131
+
132
+
133
+ for(var i = 0; i < messe.length; i++) {
134
+
135
+ for(var j = 0; j < messe[i].length; j++) {
136
+
137
+ var subject = thds[i].getMessages()[j].getSubject().replace('Fw: 【', '').replace('】', '');
138
+
139
+ var body = messe[i][j].getPlainBody();
140
+
141
+ var id = messe[i][j].getId()
142
+
143
+
144
+
145
+ if(!ids.includes(id)){
146
+
147
+ if(body.match('Date:')){
148
+
149
+ var regDate = new RegExp('Date:' + '.*?' + '\r' );
150
+
151
+ var Date = body.match(regDate)[0].replace('Date: ', '').replace('Date:', '');
152
+
153
+ }
154
+
155
+
156
+
157
+ if(body.match('【会社名】')){
158
+
159
+ var regCompany = new RegExp('【会社名】' + '[\s\S]*?' + '【部署名】');
160
+
161
+ var Company = body.match(regCompany)[0].replace('【会社名】', '').replace('【部署名】', '').replace('\n', '').replace('\r', '');
162
+
163
+ }
164
+
165
+
166
+
167
+ if(body.match('【部署名】')){
168
+
169
+ var regDepartment = new RegExp('【部署名】' + '[\s\S]*?' + '【氏名】');
170
+
171
+ var Department = body.match(regDepartment)[0].replace('【部署名】', '').replace('【氏名】', '').replace('\n', '').replace('\r', '');
172
+
173
+ }
174
+
175
+
176
+
177
+ if(body.match('【氏名】')){
178
+
179
+ var regName = new RegExp('【氏名】' + '[\s\S]*?' + '【メールアドレス】');
180
+
181
+ var Name = body.match(regName)[0].replace('【氏名】', '').replace('【メールアドレス】', '').replace('\n', '').replace('\r', '');
182
+
183
+ }
184
+
185
+
186
+
187
+ if(body.match('【メールアドレス】')){
188
+
189
+ var regEmail = new RegExp('【メールアドレス】' + '[\s\S]*?' + '【電話番号】');
190
+
191
+ var Email = body.match(regEmail)[0].replace('【メールアドレス】', '').replace('【電話番号】', '').replace('\n', '').replace('\r', '');
192
+
193
+ }
194
+
195
+
196
+
197
+ if(body.match('【電話番号】' + '[\s\S]*?' + '【お問合せ内容】')){
198
+
199
+ var regTel = new RegExp('【電話番号】' + '[\s\S]*?' + '【お問合せ内容】');
200
+
201
+ var Tel = body.match(regTel)[0].replace('【電話番号】', '').replace('【お問合せ内容】', '').replace('\n', '').replace('\r', '');
202
+
203
+ }
204
+
205
+ else if(body.match('【電話番号】' + '[\s\S]*?' + '【お問い合せ内容】')){
206
+
207
+ var regTel = new RegExp('【電話番号】' + '[\s\S]*?' + '【お問い合せ内容】');
208
+
209
+ var Tel = body.match(regTel)[0].replace('【電話番号】', '').replace('【お問い合せ内容】', '').replace('\n', '').replace('\r', '');
210
+
211
+ }
212
+
213
+ else if(body.match('【電話番号】' + '[\s\S]*?' + '【社員数】')){
214
+
215
+ var regTel = new RegExp('【電話番号】' + '[\s\S]*?' + '【社員数】');
216
+
217
+ var Tel = body.match(regTel)[0].replace('【電話番号】', '').replace('【社員数】', '').replace('\n', '').replace('\r', '');
218
+
219
+ }
220
+
221
+
222
+
223
+ if(body.match('【お問合せ内容】' + '[\s\S]*?' + '【デモンストレーション希望】')){
224
+
225
+ var regContents = new RegExp('【お問合せ内容】' + '[\s\S]*?' + '【デモンストレーション希望】');
226
+
227
+ var Contents = body.match(regContents)[0].replace('【お問合せ内容】', '').replace('【デモンストレーション希望】', '').replace('\n', '').replace('\r', '');
228
+
229
+ }
230
+
231
+ else if(body.match('【お問合せ内容】' + '[\s\S]*?' + '【知ったきっかけ】')){
232
+
233
+ var regContents = new RegExp('【お問合せ内容】' + '[\s\S]*?' + '【タレントパレットを知ったきっかけ】');
234
+
235
+ var Contents = body.match(regContents)[0].replace('【お問合せ内容】', '').replace('【知ったきっかけ】', '').replace('\n', '').replace('\r', '');
236
+
237
+ }
238
+
239
+ else if(body.match('【お問い合せ内容】' + '[\s\S]*?' + '【情報提供について】')){
240
+
241
+ var regContents = new RegExp('【お問い合せ内容】' + '[\s\S]*?' + '【情報提供について】');
242
+
243
+ var Contents = body.match(regContents)[0].replace('【お問い合せ内容】', '').replace('【情報提供について】', '').replace('\n', '').replace('\r', '');
244
+
245
+ }
246
+
247
+
248
+
249
+ if(body.match('【ご紹介方法】')){
250
+
251
+ var regDemo = new RegExp('【ご紹介方法】' + '[\s\S]*?');
252
+
253
+ var Demo = body.match(regDemo)[0].replace('【ご紹介方法】', '').replace('\n', '').replace('\r', '');
254
+
255
+ }
256
+
257
+ else if(body.match('【デモンストレーション希望】')){
258
+
259
+ var regDemo = new RegExp('【デモンストレーション希望】' + '[\s\S]*?' + '【知ったきっかけ】');
260
+
261
+ var Demo = body.match(regDemo)[0].replace('【デモンストレーション希望】', '').replace('【知ったきっかけ】', '').replace('\n', '').replace('\r', '');
262
+
263
+ }
264
+
265
+ else if(body.match('【情報提供について】')){
266
+
267
+ var regDemo = new RegExp('【情報提供について】' + '[\s\S]*?' + '【タレントパレットを知ったきっかけ】');
268
+
269
+ var Demo = body.match(regDemo)[0].replace('【情報提供について】', '').replace('【知ったきっかけ】', '').replace('\n', '').replace('\r', '');
270
+
271
+ }
272
+
273
+
274
+
275
+ if(body.match('【知ったきっかけ】')){
276
+
277
+ var regChannel = new RegExp('【知ったきっかけ】' + '[\s\S]*?' + '【関心のあるテーマ】');
278
+
279
+ var Channel = body.match(regChannel)[0].replace('【知ったきっかけ】', '').replace('【関心のあるテーマ】', '').replace('\n', '').replace('\r', '');
280
+
281
+ }
282
+
283
+
284
+
285
+ if(body.match('【関心のあるテーマ】')){
286
+
287
+ var regNeeds = new RegExp('【関心のあるテーマ】' + '[\s\S]*?' + '【社員数】');
288
+
289
+ var Needs = body.match(regNeeds)[0].replace('【関心のあるテーマ】', '').replace('【社員数】', '').replace('\n', '').replace('\r', '');
290
+
291
+ }
292
+
293
+
294
+
295
+ if(body.match('【社員数】' + '[\s\S]*?' + '【お問い合わせ内容について】')){
296
+
297
+ var regEmployees = new RegExp('【社員数】' + '[\s\S]*?' + '【お問い合わせ内容について】');
298
+
299
+ var Employees = body.match(regEmployees)[0].replace('【社員数】', '').replace('【お問い合わせ内容について】', '').replace('\n', '').replace('\r', '');
300
+
301
+ }
302
+
303
+ else if(body.match('【社員数】' + '[\s\S]*?' + '【検討状況】')){
304
+
305
+ var regEmployees = new RegExp('【社員数】' + '[\s\S]*?' + '【検討状況】');
306
+
307
+ var Employees = body.match(regEmployees)[0].replace('【社員数】', '').replace('【検討状況】', '').replace('\n', '');
308
+
309
+ }
310
+
311
+ else if(body.match('【社員数】' + '[\s\S]*?')){
312
+
313
+ var regEmployees = new RegExp('【社員数】' + '[\s\S]*?');
314
+
315
+ var Employees = body.match(regEmployees)[0].replace('【社員数】', '').replace('\n', '').replace('\r', '');
316
+
317
+ }
318
+
319
+
320
+
321
+ var regBackground = new RegExp('【検討状況】' + '[\s\S]*?');
322
+
323
+ var Background = body.match(regBackground)[0].replace('【検討状況】', '').replace('\n', '');
324
+
325
+
326
+
327
+
328
+
329
+ sheet.appendRow([, , , , , , , Date, Company, Department, Name, Email, Tel, Demo, Contents, Channel, Needs, Background, subject, Employees, id
330
+
331
+ ]);
332
+
333
+ //Logger.log([date, subject, Company, Department]);
334
+
335
+ }
336
+
337
+ var lastCol = sheet.getLastColumn();
338
+
339
+ sheet.getRange(2, 1, lastRow, lastCol).sort({column: 8, ascending: false});
340
+
341
+ }
342
+
343
+ }
344
+
345
+ }
346
+
347
+ ```
348
+
349
+ ### 補足情報(FW/ツールのバージョンなど)
350
+
351
+ HTML、CSS、簡単なマクロの知識程度しかないです。HTMLを見てfomrをいじったりができる程度で、jsやGASはこれから自分のスキルアップのために学ぼうとしているところです。
352
+
353
+ 初歩的なところがわからず大変お手数をおかけしますが、ご指導いただけると嬉しいです。
354
+
355
+ よろしくお願いします。