質問編集履歴

2

変更

2019/11/11 08:00

投稿

dell_0
dell_0

スコア25

test CHANGED
File without changes
test CHANGED
@@ -1,40 +1,30 @@
1
- gmailで特定のアドレスから来るメール、各個人のslackにダイレクトメールをしたく、GASを作っています。
1
+ 改めて質問させていただきます。
2
2
 
3
3
 
4
4
 
5
+ スプレッドシート
6
+
5
- 別で各個人の特定のアドレスから来るメールを、自分のgmailに転送する仕組みにしています。
7
+ A1「a@gmail.com」、B1「1111」
8
+
9
+ A2「b@gmail.com」、B2「2222」
6
10
 
7
11
 
8
12
 
13
+ というデータがあり、
14
+
15
+ GmailApp.searchで「a@gmail.com」からメールを受信した場合に、
16
+
17
+ 「slackID」にB1の「1111」を代入するにはどうしたらよいでしょうか?
9
18
 
10
19
 
11
- ■スプレッドシート
12
-
13
- A列に個人のメールアドレスを記載
14
-
15
- B列に個人のslackメンバーIDを記載
16
-
17
-
18
-
19
- ■GAS
20
-
21
- var SLACK_WEBHOOK_URL = 'xxxxxxxxxxxxxxxx';
22
20
 
23
21
  function run() {
24
22
 
25
23
 
26
24
 
27
- var sheet = SpreadsheetApp.getActiveSheet();
25
+ var sheet = SpreadsheetApp.getActiveSheet();
28
26
 
29
- var data = sheet.getDataRange().getValues();
27
+ var data = sheet.getDataRange().getValues();
30
-
31
- var title = "メール通知";
32
-
33
- var searchQuery = "from:特定のメールアドレス to:**宛先メールアドレス**";
34
-
35
- var checkSpanMinute= 15; // 起動時間間隔(15分)
36
-
37
-
38
28
 
39
29
 
40
30
 
@@ -42,129 +32,59 @@
42
32
 
43
33
 
44
34
 
45
- var dt = new Date();
46
35
 
36
+
37
+ var searchQuery = "a@gmail.com";
38
+
39
+ var dt = new Date();
40
+
47
- dt.setMinutes(dt.getMinutes() - checkSpanMinute);
41
+ dt.setMinutes(dt.getMinutes() - checkSpanMinute);
48
42
 
49
43
 
50
44
 
51
- var threads = GmailApp.search(searchQuery);
45
+ var threads = GmailApp.search(searchQuery);
52
46
 
53
47
 
54
48
 
55
- var msgs = GmailApp.getMessagesForThreads(threads);
49
+ var msgs = GmailApp.getMessagesForThreads(threads);
56
50
 
57
- for(var i = 0; i < msgs.length; i++) {
51
+ for(var i = 0; i < msgs.length; i++) {
58
52
 
59
- var lastMsgDt = threads[i].getLastMessageDate();
53
+ var lastMsgDt = threads[i].getLastMessageDate();
60
54
 
61
55
 
62
56
 
63
- if(lastMsgDt.getTime() < dt.getTime()) {
57
+ if(lastMsgDt.getTime() < dt.getTime()) {
64
58
 
65
- break;
59
+ break;
66
-
67
- }
68
-
69
-
70
-
71
- for(var j = 0; j < msgs[i].length; j++) {
72
-
73
- var msgDate = msgs[i][j].getDate();
74
-
75
- var msgBody = msgs[i][j].getPlainBody();
76
-
77
- var msgFrom = msgs[i][j].getFrom();
78
-
79
- var matches = msgFrom.match(/"(.+)".*<(.+)>/)
80
-
81
- {
82
-
83
- var subject = msgs[i][j].getSubject();
84
-
85
- var To = msgs[i][j].getTo();
86
-
87
- var postMsg =
88
-
89
- title + "\n" + "From:" + msgFrom + "\n" + "To:" + To + "\n" + "日付:" +
90
-
91
- Utilities.formatDate(msgDate, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm') + "\n" +
92
-
93
- "件名:" + subject + "\n" +
94
-
95
-
96
-
97
- msgBody
98
-
99
-
100
-
101
-
102
-
103
- // リクエストトークン
104
-
105
-     var params = {
106
-
107
-       method: 'post',
108
-
109
-       contentType: 'application/json',
110
-
111
-       payload: JSON.stringify({
112
-
113
-       channel: '**個人のslackメンバーID**',
114
-
115
-       text:postMsg,
116
-
117
-           link_names: 1,
118
-
119
-           })
120
-
121
-          };
122
-
123
-             var response = UrlFetchApp.fetch(SLACK_WEBHOOK_URL, params);
124
-
125
-          console.log("response:", response);
126
-
127
-           return response;
128
-
129
-   }
130
-
131
-
132
-
133
-   }
134
-
135
-   }
136
-
137
-  }
138
60
 
139
61
  }
140
62
 
141
63
 
142
64
 
143
- トリガーとして、特定のメールアドレスから来るメールを受信したら、
65
+ for(var j = 0; j < msgs[i].length; j++) {
144
66
 
145
- スプレッドシートA列の個人のメールアドレスを検索し**宛先メールアドレス**に代入、
67
+ var To = msgs[i][j].getTo();
146
68
 
147
- さらにその個人のメールアドレスの1つ右隣のB列にある数値の**個人のslackメンバーID**をスクリプトに代入できればwebhookからslackに転送できると思ってるのですが、書き方が分かりません。
69
+ }
148
70
 
149
71
 
150
72
 
151
- function myFunction() {
73
+ for (var i=0; i<data.length; i++){
152
74
 
153
- var sheet = SpreadsheetApp.getActiveSheet();
75
+ var mail = data[i][0];
154
76
 
155
- var data = sheet.getDataRange().getValues();
156
77
 
157
-
158
78
 
159
- for (var i=1; i<data.length; i++){
79
+ if(mail === To){
160
80
 
161
- var mail = data[i][0];
81
+ var slackID = mail.offset(0,1).getValue();
162
82
 
163
- var slackID = data[i][1];
164
83
 
165
- Logger.log(slackID);
166
84
 
85
+
86
+
167
- }
87
+ }
168
88
 
169
89
  }
170
90
 

1

誤字

2019/11/11 08:00

投稿

dell_0
dell_0

スコア25

test CHANGED
File without changes
test CHANGED
@@ -142,7 +142,7 @@
142
142
 
143
143
  トリガーとして、特定のメールアドレスから来るメールを受信したら、
144
144
 
145
- GmailApp.searchでスプレッドシートA列の個人のメールアドレスを検索し**宛先メールアドレス**に代入、
145
+ スプレッドシートA列の個人のメールアドレスを検索し**宛先メールアドレス**に代入、
146
146
 
147
147
  さらにその個人のメールアドレスの1つ右隣のB列にある数値の**個人のslackメンバーID**をスクリプトに代入できればwebhookからslackに転送できると思ってるのですが、書き方が分かりません。
148
148