回答編集履歴
3
修正
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 message
|
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
|
-
|
41
|
+
var plainBody = message.getPlainBody();
|
32
42
|
|
33
43
|
|
34
44
|
|
35
|
-
|
45
|
+
// メール本文が取得できているかログに出力して確認
|
36
46
|
|
37
|
-
|
47
|
+
Logger.log(plainBody);
|
38
48
|
|
39
49
|
|
40
50
|
|
41
|
-
|
51
|
+
const item = new Map()
|
42
52
|
|
43
|
-
|
53
|
+
for(const t of plainBody.matchAll(/\r\n■(.+)\r\n(.+)\r\n/gm)){
|
44
54
|
|
45
|
-
|
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
|
-
|
63
|
+
var date = message.getDate();
|
58
64
|
|
59
65
|
|
60
66
|
|
61
|
-
|
67
|
+
// メールアドレスを取得
|
62
68
|
|
63
|
-
|
69
|
+
var email = item.get("メールアドレス");
|
64
70
|
|
65
71
|
|
66
72
|
|
67
|
-
|
73
|
+
// お名前を取得
|
68
74
|
|
69
|
-
|
75
|
+
var name = item.get("お名前");
|
70
76
|
|
71
77
|
|
72
78
|
|
73
|
-
// 書き込むシートを取得
|
74
79
|
|
75
|
-
var sheet = SpreadsheetApp.getActive().getSheetByName('お問い合わせ');
|
76
80
|
|
77
|
-
|
81
|
+
// 最終行を取得
|
78
82
|
|
79
|
-
|
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
|
-
|
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
修正 エラー処理
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
修正
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
|
|