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

回答編集履歴

3

追記

2020/05/03 09:06

投稿

eneko0513
eneko0513

スコア349

answer CHANGED
@@ -84,4 +84,25 @@
84
84
  Logger.log(data);
85
85
  return data;
86
86
  }
87
- ```
87
+ ```
88
+
89
+ **追記**
90
+ ちょっとかかりすぎてしまったので今回が最後の回答にさせて下さい。
91
+ idは不要です、それも次のエラーになる内容です。(いまはその前で止まっている)
92
+
93
+ シンプルに切り分けしましょう。
94
+ わたしのほうでもらったmymsg[i][3]のテキストを変数に入れてfetchDataで処理したら
95
+ dataの中に該当の文字列は取れていました。
96
+ ![イメージ説明](eabd7149200b2d7799dbf3f83073404e.png)
97
+ あとは格納の仕方とかを見直して見て下さい。
98
+
99
+ 何もわからずappendrowしているならなおさら消して下さい。
100
+ ```GAS
101
+ sheet.appendRow([
102
+ mymsg[i][4] = fetchData(mymsg[i][3],'Appointment:','\r'),
103
+ id
104
+ ]);
105
+
106
+ mymsg[i][4] = fetchData(mymsg[i][3],'Appointments:','Name');
107
+ ```
108
+ で一度内容を見てください。

2

情報追加

2020/05/03 09:06

投稿

eneko0513
eneko0513

スコア349

answer CHANGED
@@ -24,4 +24,64 @@
24
24
  ```
25
25
  このあたりが怪しいですね。
26
26
  追加しようとしているシートのオブジェクトはどれでしょうか・・?
27
- なのでsheetという名前を該当のシートのオブジェクトの変数に変えてみると結果が変わるかもしれません。(mySheetが今回はあたりかな・・?)
27
+ なのでsheetという名前を該当のシートのオブジェクトの変数に変えてみると結果が変わるかもしれません。(mySheetが今回はあたりかな・・?)
28
+
29
+ // 追記2
30
+ mymsg[i][4]を追加したこととなにか関係があるかでいうとあると思います。
31
+ ```GAS
32
+ sheet.appendRow([
33
+ mymsg[i][4] = fetchData(mymsg[i][3],'Appointment:','\r'),
34
+ id
35
+ ]);
36
+ ```
37
+ ここでappendRowをしていますよね。
38
+ このときに追加対象となるsheet情報が無いからエラーになっていると推測しています。
39
+ > ReferenceError.sheet is not defined(行34、ファイル「コード」)
40
+
41
+ 再度切り分けです。
42
+ ・これがなければ正常に動く という点においての「これ」は何を指しますか?
43
+  34行目自体が無いこと? mymsg[i][3] までは取得できていて[i][4]を追加したら駄目ということ?
44
+ ・fetchData関数に到達していますか?
45
+ ・Logger関数などで正しくmymsg[i][3]までが表示されることは確認していますか
46
+ ・わたしの前コメントで書いた内容にした時にエラーは変わりましたか
47
+
48
+ fetchDataに関してはわたしは動作確認はしていないのでまったくないとは言い切れませんが
49
+ エラーの内容を見るにその関数の中に到達できていないのではないかと思っています。
50
+
51
+ エラーの要因で現時点でぱっと思いつくのは下記ですよね
52
+ ・msgs[i][3]の中身がおかしい
53
+ ・fetchData関数の中身がおかしい
54
+ ・fetchData関数を呼び出す前のsheet.appendRow()がおかしい
55
+
56
+ 確認のためLogger.logを仕込んで(下記のようなイメージ)到達しているか確認して下さい。
57
+ Logger.logの確認方法については基本的な所なのでご存知なければ検索してみて下さい。
58
+
59
+
60
+ ```GAS
61
+ for(var j = 0; j < msgs[i].length; j++) {
62
+ mymsg[i][0] = msgs[i][j].getDate();
63
+ mymsg[i][1] = msgs[i][j].getFrom();
64
+ mymsg[i][2] = msgs[i][j].getSubject();
65
+ var nbsp = String.fromCharCode(160);
66
+ mymsg[i][3] = msgs[i][j].getPlainBody().replace(/<("[^"]*"|'[^']*'|[^'">])*>|nbsp/g,'').replace(/&; | /g,'').substring(0,50000);
67
+ Logger.log("start");
68
+ sheet.appendRow([
69
+ mymsg[i][4] = fetchData(mymsg[i][3],'Appointment:','\r'),
70
+ id
71
+ ]);
72
+ Logger.log("end");
73
+ }
74
+ ```
75
+
76
+ ```GAS
77
+ function fetchData(str, pre, suf) {
78
+ Logger.log("fetchDataStart");
79
+ var reg = new RegExp(pre + '.*?' + suf);
80
+ Logger.log("fetchData_reg");
81
+ var data = str.match(reg)[0]
82
+ .replace(pre, '')
83
+ .replace(suf, '');
84
+ Logger.log(data);
85
+ return data;
86
+ }
87
+ ```

1

情報追加

2020/05/03 05:11

投稿

eneko0513
eneko0513

スコア349

answer CHANGED
@@ -9,4 +9,19 @@
9
9
  .replace(suf, '');
10
10
  return data;
11
11
  }
12
- ```
12
+ ```
13
+
14
+ **// 2020/05/03 追記**
15
+ 頂いた情報を見た所、エラーの内容はsheet というものが存在しないというのがまず1つ出ていますね。
16
+ ご自身のソースを見ると sheet というオブジェクトに行を追加しようとしていますがそれが存在しないためエラーになっていそうです。
17
+
18
+ 今回であれば
19
+ ```GAS
20
+ var mysheetname = 'Gmail解析_' + DateString(new Date());
21
+
22
+ var GmailSS = SpreadsheetApp.create(mysheetname);
23
+ var mySheet = GmailSS.getSheets()[0];
24
+ ```
25
+ このあたりが怪しいですね。
26
+ 追加しようとしているシートのオブジェクトはどれでしょうか・・?
27
+ なのでsheetという名前を該当のシートのオブジェクトの変数に変えてみると結果が変わるかもしれません。(mySheetが今回はあたりかな・・?)