回答編集履歴

2

a

2019/10/27 14:08

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -32,13 +32,13 @@
32
32
 
33
33
  var threads = GmailApp.search('subject:(hogehoge)', i * unit + 1, unit * (i + 1)); // データがなかったら何が返るのだろう?
34
34
 
35
- var mail = GmailApp.getMessagesForThreads(threads).map(function (thread) {
35
+ var mail = GmailApp.getMessagesForThreads(threads).reduce(function (a, thread) {
36
36
 
37
- return thread.map(function (mail) {
37
+ return a.concat(thread.map(function (mail) {
38
38
 
39
39
  return [mail.getDate(), mail.getSubject(), mail.getPlainBody()];
40
40
 
41
- });
41
+ }),[]);
42
42
 
43
43
  });
44
44
 

1

a

2019/10/27 14:08

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -17,3 +17,43 @@
17
17
 
18
18
 
19
19
  時間がかかる問題は、毎回appendRowしないのと、検索範囲を日付で制約するかとかチェック済みのやつにラベルつけて識別するとか、母集団を枝刈りする方向がよいのでは
20
+
21
+
22
+
23
+ ```javascript
24
+
25
+ function q219018() {
26
+
27
+ const unit = 500
28
+
29
+ var data = [];
30
+
31
+ for (var i = 0; i < 100; i++) {
32
+
33
+ var threads = GmailApp.search('subject:(hogehoge)', i * unit + 1, unit * (i + 1)); // データがなかったら何が返るのだろう?
34
+
35
+ var mail = GmailApp.getMessagesForThreads(threads).map(function (thread) {
36
+
37
+ return thread.map(function (mail) {
38
+
39
+ return [mail.getDate(), mail.getSubject(), mail.getPlainBody()];
40
+
41
+ });
42
+
43
+ });
44
+
45
+ data = data.concat(mail); //nullとか空配列をconcatしたらどうなるんだろう?
46
+
47
+ }
48
+
49
+ if (data.length < 1) return;
50
+
51
+ const sheet = SpreadsheetApp.getActiveSheet();
52
+
53
+ const r = sheet.getLastRow();
54
+
55
+ sheet.getRange(r + 1, 1, data.length, 3).setValues(data);
56
+
57
+ }
58
+
59
+ ```