回答編集履歴
2
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
+ console.log('検索条件に合致するメールが見つかりませんでした。');
|
37
37
|
+ return;
|
38
38
|
+}
|
39
|
-
const label = GmailApp.getUserLabelByName('転記済');
|
39
|
+
const label = GmailApp.getUserLabelByName('転記済') ?? GmailApp.createLabel('転記済');
|
40
40
|
|
41
41
|
const data = messages.map(message => {
|
42
42
|
const body = message[0].getPlainBody();
|
1
test
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# エラーの原因
|
1
2
|
「TypeError: Cannot read property 'length' of undefined at tenkiMessage(splitコード:35:53)」というエラーは
|
2
3
|
```
|
3
4
|
sheet.getRange(lastRow, 1, messages.length, data[0].length).setValues(data);
|
@@ -11,15 +12,17 @@
|
|
11
12
|
//検索条件に該当するスレッド一覧を取得
|
12
13
|
const messages = GmailApp.getMessagesForThreads(threads);
|
13
14
|
```
|
14
|
-
の部分でメールを取得していますが、条件に合致するメールがない場合、messagesは空の配列になります。
|
15
|
+
の部分でメールを取得していますが、検索条件に合致するメールがない場合、messagesは空の配列([])になります。
|
15
16
|
|
16
|
-
messagesが空の配列のとき、const data = messages.map(message => {}); の部分でdataも空の配列になります。
|
17
|
+
messagesが空の配列のとき、const data = messages.map(message => {}); の部分でdataも空の配列([])になります。
|
17
18
|
|
18
|
-
空の配列dataに対して、data[0] undefined となります。
|
19
|
+
空の配列dataに対して、data[0] とすると、これは undefined となります。
|
19
|
-
し
|
20
|
+
そしてdata[0].length を評価した時点で 「'length' of undefined」 エラーが発生します。
|
20
21
|
|
22
|
+
---
|
21
23
|
|
24
|
+
# 解決案
|
22
|
-
対策として、条件に当てはまる
|
25
|
+
対策として、検索条件に当てはまるメールが存在しない場合は、returnして処理をスキップするようにします。
|
23
26
|
```diff
|
24
27
|
const tenkiMessage = () => {
|
25
28
|
const condition = 'subject:(新規注文番号) -label:(転記済)';
|