回答編集履歴

1

修正

2019/03/18 08:14

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -1,5 +1,239 @@
1
+ slack送信用ライブラリを使って送信するように書いてます(なぜかライブラリがあるのに、URLFETCHでやろうとしていましたが、そこはすみません、無視してます)
2
+
3
+
4
+
5
+ ```javascript
6
+
7
+ /* カレンダーへイベントを登録する */
8
+
9
+ function getsheet() {
10
+
11
+ /*-前準備-*/
12
+
13
+
14
+
15
+ //shtを定義
16
+
17
+ var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("カレンダー");
18
+
19
+
20
+
21
+ //シートの2行目〜最終行まで処理を繰り返す
22
+
23
+ for(var i = 2; i <= sht.getLastRow(); i++) {
24
+
25
+
26
+
27
+ /*-前準備ここまで-*/
28
+
29
+
30
+
31
+ /*--スプレッドシートの値を取得して変数へ格納--*/
32
+
33
+
34
+
35
+ //i行1列目の値(イベント日)をeventdayへ格納
36
+
37
+ var eventday = sht.getRange(i, 1).getValue();
38
+
39
+
40
+
41
+ //開始日をUtilities.formatDateでフォーマットしてbへ格納
42
+
43
+ var b = Utilities.formatDate(eventday,"JST","yyyy/MM/dd");
44
+
45
+
46
+
47
+ //i行2列目の値(イベントの名前)をeventnameへ格納
48
+
49
+ var eventname = sht.getRange(i,2).getValue();
50
+
51
+
52
+
53
+ //i行3列目の値(イベントの場所)をplaceへ格納
54
+
55
+ var place = sht.getRange(i,3).getValue();
56
+
57
+
58
+
59
+ //i行4列目の値(開始時刻)をstartへ格納
60
+
61
+ var starttime = sht.getRange(i,4).getValue();
62
+
63
+
64
+
65
+ var H = starttime.getHours();//starttimeの時間を取得してHへ格納
66
+
67
+ var M = starttime.getMinutes();//starttimeの時間を取得してMへ格納
68
+
69
+  
70
+
71
+ //new Dateメソッドで開始日時「yyMMdd hh:mm」をstartへ格納
72
+
73
+ var start = new Date(b+" "+H+":"+M); 
74
+
75
+
76
+
77
+ //i行5列目の値(終了時刻)をendへ格納
78
+
79
+ var endtime = sht.getRange(i,5).getValue();
80
+
81
+
82
+
83
+ var H1 = endtime.getHours();//endtimeの時間を取得してH1へ格納
84
+
85
+ var M1 = endtime.getMinutes();//endtimeの分を取得してM1へ格納
86
+
87
+  
88
+
89
+ //new Dateメソッドで終了日時「yyMMdd hh:mm」をendへ格納
90
+
91
+ var end = new Date(b+" "+H1+":"+M1);
92
+
93
+
94
+
95
+ /*--カレンダーへ登録--*/
96
+
97
+
98
+
99
+ //i行6列目の値(イベント登録有無)をaddedへ格納
100
+
101
+ var added = sht.getRange(i,6).getValue();
102
+
103
+
104
+
105
+ //addedの値が空白だったらカレンダー登録を実行
106
+
107
+ if(added === "") {
108
+
109
+ Cal = CalendarApp.getCalendarById('***@*.com');//<---ここを自分のgmailアドレス入れてます
110
+
111
+
112
+
113
+ //指定のカレンダーIDへイベント登録
114
+
115
+ Cal.createEvent(eventname,start,end,{location:place});//createEvent(タイトル、開始日時、終了日時、オプション)
116
+
117
+
118
+
119
+ //カレンダー登録が終わったイベントのaddedへ「登録完了」を記入
120
+
121
+ sht.getRange(i,6).setValue("登録完了");
122
+
123
+
124
+
125
+ }   //ifを閉じる
126
+
127
+ }      //forを閉じる
128
+
129
+ }        //functionを閉じる
130
+
131
+
132
+
133
+ function Trigger() {
134
+
135
+ getsheet();
136
+
137
+ postSlack();
138
+
139
+ }
140
+
141
+ function postSlack(text) {
142
+
143
+ text = text || "test message";
144
+
145
+ var token = 'xoxp-378845188965-378482081860-579451696117-24eb2***************';
146
+
147
+
148
+
149
+ // slackAppインスタンスを取得
150
+
151
+ var slackApp = SlackApp.create(token);
152
+
153
+
154
+
155
+ // slackのチャンネル指定
156
+
157
+ var channel = PropertiesService.getScriptProperties().getProperty('お休み連絡網');
158
+
159
+
160
+
161
+ // slack送信時のタイトルを入れておく
162
+
163
+ var bot_title = 'お休み申請';
164
+
165
+
166
+
167
+ // slack送信時の画像URLを入れておく(「FLAT ICON DESIGN」さんの画像をアイコンとして利用しています)
168
+
169
+ var iconUrl = 'http://flat-icon-design.com/f/f_object_100/s512_f_object_100_0bg.png';
170
+
171
+
172
+
173
+ // slackを送る関数を作る(トリガーから実行時間を指定)
174
+
175
+ sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("カレンダー");
176
+
177
+
178
+
179
+ for(i = 2; i <= sht.getLastRow(); i++) {
180
+
181
+
182
+
183
+ var addedslack = sht.getRange(i,7).getValue();
184
+
185
+ var name = sht.getRange(i, 2).getValue();
186
+
187
+ var eventday = sht.getRange(i, 1).getValue();
188
+
189
+ var b = Utilities.formatDate(eventday,"JST","yyyy/MM/dd");
190
+
191
+ text += "\n" + name + "さんは\n" + b + "にお休みを申請しました\n";
192
+
1
- これがコードの全部だとすると、send_slack()ないです。
193
+ // もしaddedslackが空白だったら
194
+
2
-
195
+ if(addedslack === "") {
196
+
3
-
197
+ // my_slackbotにメッセージを送信する
198
+
4
-
199
+ // var url = "https://***********/messages/CGXNS96LQ";
200
+
201
+ // var options = {
202
+
203
+ // "method" : "POST",
204
+
205
+ // "headers": {"Content-type": "application/json"},
206
+
207
+ // "payload" : '{"text":"' + text + '"}'
208
+
209
+ // };
210
+
211
+ // UrlFetchApp.fetch(url, options);
212
+
213
+ slackApp.postMessage(channel, text, {
214
+
215
+ username : bot_title,
216
+
5
- 関数の宣言はあるけど、実行していない
217
+ icon_url : iconUrl
218
+
219
+ });
220
+
221
+ }
222
+
223
+
224
+
225
+ sht.getRange(i,7).setValue("Slack投稿完了");
226
+
227
+
228
+
229
+ }
230
+
231
+ }
232
+
233
+ function test() {
234
+
235
+ postSlack(b+name+"いただきます!");
236
+
237
+ }
238
+
239
+ ```