回答編集履歴

3

修正

2021/09/09 13:33

投稿

退会済みユーザー
test CHANGED
@@ -5,6 +5,20 @@
5
5
  ```
6
6
 
7
7
  function myFunction() {
8
+
9
+
10
+
11
+ // 書き込むシートを取得
12
+
13
+ var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ');
14
+
15
+
16
+
17
+ // ラベルを取得
18
+
19
+ var label = GmailApp.getUserLabelByName('処理済み') || GmailApp.createLabel("処理済み");
20
+
21
+
8
22
 
9
23
  // 検索条件に該当するスレッド一覧を取得
10
24
 
@@ -16,93 +30,65 @@
16
30
 
17
31
  threads.forEach(function(thread) {
18
32
 
19
- // スレッド内のメール一覧を取得
33
+ // スレッド内のメールのうち先頭を取得
20
34
 
21
- var messages = thread.getMessages();
35
+ var message = thread.getMessages()[0];
22
36
 
23
37
 
24
38
 
25
- // メールを一つずつり出す
39
+ // メール本文を取
26
40
 
27
- messages.forEach(function(message) {
28
-
29
- // メール本文を取得
30
-
31
- var plainBody = message.getPlainBody();
41
+ var plainBody = message.getPlainBody();
32
42
 
33
43
 
34
44
 
35
- // 各項目を格納すMap
45
+ // メール本文が取得できていかログに出力して確認
36
46
 
37
- const item = new Map()
47
+ Logger.log(plainBody);
38
48
 
39
49
 
40
50
 
41
- // メール中の項目を切り出す。
51
+ const item = new Map()
42
52
 
43
- for(const t of plainBody.matchAll(/\r\n■(.+)\r\n(.+)\r\n/gm)){
53
+ for(const t of plainBody.matchAll(/\r\n■(.+)\r\n(.+)\r\n/gm)){
44
54
 
45
- item.set(t[1],t[2]);
55
+ item.set(t[1],t[2]);
46
56
 
47
- }
57
+ }
48
-
49
- // メール本文が取得できているかログに出力して確認
50
-
51
- Logger.log(plainBody);
52
58
 
53
59
 
54
60
 
55
- // 日時を取得
61
+ // 日時を取得
56
62
 
57
- var date = message.getDate();
63
+ var date = message.getDate();
58
64
 
59
65
 
60
66
 
61
- // メールアドレスを取得
67
+ // メールアドレスを取得
62
68
 
63
- var email = item.get("メールアドレス");
69
+ var email = item.get("メールアドレス");
64
70
 
65
71
 
66
72
 
67
- // お名前を取得
73
+ // お名前を取得
68
74
 
69
- var name = item.get("お名前");
75
+ var name = item.get("お名前");
70
76
 
71
77
 
72
78
 
73
- // 書き込むシートを取得
74
79
 
75
- var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ');
76
80
 
77
- if (sheet==null) {
81
+ // 最終行を取得
78
82
 
79
- Logger.log('「お問い合わせ」という名前のシートが見つからなかったか、アクティブなシートが存在しませんでした。終了します。');
83
+ var lastRow = sheet.getLastRow() + 1;
80
-
81
- return;
82
-
83
- }
84
84
 
85
85
 
86
86
 
87
- // 最終行を取得
87
+ // セルを取得して値を転記
88
88
 
89
- var lastRow = sheet.getLastRow() + 1;
90
-
91
-
92
-
93
- // セルを取得して値を転記
94
-
95
- sheet.getRange(lastRow, 1,1,3).setValues([[date,email,name]]);
89
+ sheet.appendRow([date,email,name])
96
90
 
97
91
 
98
-
99
- });
100
-
101
-
102
-
103
- // ラベルを取得 -> この行以下3行は毎回行う必要はないのでforEachの外に移動してもいいかもしれません。
104
-
105
- var label = GmailApp.getUserLabelByName('処理済み') || GmailApp.createLabel("処理済み");
106
92
 
107
93
 
108
94
 

2

修正 エラー処理

2021/09/09 13:33

投稿

退会済みユーザー
test CHANGED
@@ -74,13 +74,21 @@
74
74
 
75
75
  var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ');
76
76
 
77
+ if (sheet==null) {
78
+
79
+ Logger.log('「お問い合わせ」という名前のシートが見つからなかったか、アクティブなシートが存在しませんでした。終了します。');
80
+
81
+ return;
82
+
83
+ }
84
+
77
85
 
78
86
 
79
87
  // 最終行を取得
80
88
 
81
89
  var lastRow = sheet.getLastRow() + 1;
82
90
 
83
-
91
+
84
92
 
85
93
  // セルを取得して値を転記
86
94
 

1

修正

2021/09/01 04:33

投稿

退会済みユーザー
test CHANGED
@@ -94,11 +94,7 @@
94
94
 
95
95
  // ラベルを取得 -> この行以下3行は毎回行う必要はないのでforEachの外に移動してもいいかもしれません。
96
96
 
97
- var label = GmailApp.getUserLabelByName('処理済み');
97
+ var label = GmailApp.getUserLabelByName('処理済み') || GmailApp.createLabel("処理済み");
98
-
99
- // ラベルがない場合は作る。
100
-
101
- if (label == null) GmailApp.createLabel("処理済み");
102
98
 
103
99
 
104
100